如何在2个CLI线程之间共享变量(bool)?

时间:2016-07-02 22:15:54

标签: multithreading visual-c++ c++-cli

我有一个功能,我想睡觉而不会延迟线程的其余部分。我不想为每个功能创建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);
}

由于某种原因,我想睡觉的功能根本不运行。任何人都可以帮助我解决我的错误或提供更好的解决方案吗?感谢。

1 个答案:

答案 0 :(得分:1)

如果不延迟线程的其余部分,你就无法入睡。你必须为此创建另一个线程。此外,您不能简单地在线程之间共享全局变量,因为无法保证对该变量的访问顺序。查看互斥锁,信号量,锁和原子变量以获取帮助。