这是线程#1上的代码:
move = false;
//start thread #2
while(!move) Sleep(5);
//do stuff
线程#2代码:
//do stuff
move = true;
是否有更好的方法可以等待移动的更改,例如,执行所谓的阻止,直到在网络中读取数据?
答案 0 :(得分:1)
使用C ++ 11?使用std :: condition_variable。
答案 1 :(得分:1)
你拥有的是一种方式。
还有其他可以使用的东西。我想到了一些:
使用条件
condition是你可以 wait()代码的其他部分(线程)的地方 signal()你可以继续
条件与互斥锁相关
在您的代码中:
线程#1
// start thread #2
mutex.acquire();
// You could check for an actual condition here if it
// is more complex than a true false.
condition.wait();
// If we're checking for a complex condition here
// we should re-evaluate in case it is not satisfied.
mutex.release();
线程#2
// do stuff
mutex.acquire();
condition.signal();
mutex.release();
使用未来
Future是用于表示异步操作结果的更高级别构造。
它或多或少都是这样的:
Future
对象并保留对它的引用,并将引用传递给执行异步操作的线程。