我有一个功能,我想睡觉而不会延迟线程的其余部分。我不想为每个功能创建2个单独的线程,以避免妨碍性能。我的解决方案是创建一个单独的线程,它会在每个睡眠时间改变bool的值。
我声明了一个全局bool变量
bool sleepcomplete;
我有一个帖子
if (condition)
{
other function();
if (condition && sleepcomplete){
function I want to sleep();
}
}
现在是睡眠线程
void Sleeper()
{
sleepcomplete= true;
Sleep(sleeptime);
sleepcomplete= false;
Sleep(sleeptime);
}
由于某种原因,我想睡觉的功能根本不运行。任何人都可以帮助我解决我的错误或提供更好的解决方案吗?感谢。
答案 0 :(得分:1)
如果不延迟线程的其余部分,你就无法入睡。你必须为此创建另一个线程。此外,您不能简单地在线程之间共享全局变量,因为无法保证对该变量的访问顺序。查看互斥锁,信号量,锁和原子变量以获取帮助。