如何在 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);
}
出于某种原因,我想休眠的功能根本没有 运行。任何人都可以帮助我解决我做错的事情或提供更好的解决方案吗?谢谢
你不能在不延迟线程的其余部分的情况下睡觉。您将不得不为此创建另一个线程。此外,您不能简单地在线程之间共享全局变量,因为无法保证访问该变量的顺序。查看互斥量、信号量、锁和原子变量以获得帮助。
我有一个函数,我想在不延迟线程其余部分的情况下休眠。我不想为每个函数创建 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);
}
出于某种原因,我想休眠的功能根本没有 运行。任何人都可以帮助我解决我做错的事情或提供更好的解决方案吗?谢谢
你不能在不延迟线程的其余部分的情况下睡觉。您将不得不为此创建另一个线程。此外,您不能简单地在线程之间共享全局变量,因为无法保证访问该变量的顺序。查看互斥量、信号量、锁和原子变量以获得帮助。