使用std::thread
运行一个运行无限循环的方法,循环是否可以查询是否已请求加入线程...或者我是否需要手动添加“exitThread”标志?
换句话说,isJoined
看起来像什么(未经测试的伪代码):
std::atomic<int> global_counter (0);
void Run()
{
while(!isJoined())
{
doSomething();
++global_counter;
}
}
int main()
{
thread t(Run);
Sleep(10000);
t.join();
cout << "Iterated " << global_counter << "times" << endl;
}
答案 0 :(得分:8)
您要做的不仅是加入线程,还要发送消息。这两件事情是不同的,你需要做两件事。
要向线程发送消息,您使用条件变量发出信号。既然你知道你需要的东西的名字,你可以谷歌,你会发现很多很好的教程解释如何使用这个概念发信号,所以我觉得没有必要在这里详细说明。
答案 1 :(得分:-2)
使用变量表示退出:
volatile boolean request_exit = false;
在循环中测试变量:
while(!request_exit) { do work }
然后在join之前设置变量:
request_exit = true;
t.join();