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

How do I share a variable (bool) between 2 CLI threads?

我有一个函数,我想在不延迟线程其余部分的情况下休眠。我不想为每个函数创建 2 个单独的线程以避免影响性能。我的解决方案是创建一个单独的线程,它会在每次睡眠时间更改 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);
}

出于某种原因,我想休眠的功能根本没有 运行。任何人都可以帮助我解决我做错的事情或提供更好的解决方案吗?谢谢

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