提问人:HCMUSer 提问时间:11/6/2023 最后编辑:TsyvarevHCMUSer 更新时间:11/6/2023 访问量:41
在 C++ 中使用多线程时绘图不流畅
Not smoothy in drawing when using multithread in c++
问:
我的程序有这个功能: 1 个线程用于车辆移动,1 个线程用于user_input,1 个线程用于使用该输入移动人员。 一步后,我将绘制车辆和人员。如果我使用单线程,那么它可以工作。当我使用多线程时,它有时会崩溃,并且人和车辆的显示不流畅。
这是我的代码
void CGame::startGame()
{
char user_input;
bool input_ready = false;
bool draw_finish = true;
setGame();
CPeople people;
//g.runGame();
char inp;
condition_variable cv, cv2;
mutex m;
thread t1([&cv, &m, &user_input, &input_ready, &draw_finish, &cv2]() {
while (true) {
unique_lock<mutex> lock(m);
cv2.wait(lock, [&draw_finish] {return draw_finish; });
user_input = CConsole::getInput();
input_ready = true;
draw_finish = false;
cv.notify_one();
}
});
thread t3([&people, &cv, &m, &user_input, &input_ready, &draw_finish, &cv2]() {
while (true) {
unique_lock<mutex> lock(m);
cv.wait(lock, [&input_ready] { return input_ready; });
people.peopleMoving(user_input);
//this_thread::sleep_for(chrono::milliseconds(10));
draw_finish = true;
input_ready = false;
cv2.notify_one();
}
});
//INPUT.get();
mutex m2;
thread t2([this, &m2, &cv, &draw_finish]() {
// unique_lock<mutex> lock(m);
m2.lock();
this->runObstacle();
//this_thread::sleep_for(chrono::milliseconds(100));
m2.unlock();
});
//while (true) {
// inp = CConsole::getInput();
// people.peopleMoving(inp);
// //std::this_thread::sleep_for(std::chrono::seconds());
//}
t1.join();
t2.join();
t3.join();
//
}
绘制功能只是擦除旧位置并在新位置打印。
答: 暂无答案
评论