根据C++ 0x最终草案,没有办法请求线程终止.也就是说,如果需要,我们需要实施一个自己动手的解决方案.
另一方面,boost :: thread提供了一种以安全方式中断线程的机制.
在您看来,什么是最好的解决方案?设计自己的合作"中断机制"还是本土的?
我正在学习C ++ 11中的新多线程技术。我在网络上阅读的几乎所有教程都在教如何启动执行一个函数的新线程(一个或多个线程),如何稍后加入(或分离)一个或多个线程以及如何使用mutex等避免竞争状况。
但是我没有看到它们显示如何使线程在程序的不同部分执行多个功能。问题是,使用C ++ 11线程是否可以实现以下目标?如果是这样,怎么办?(举个例子会很棒)。
void func1(std::vector<int> & data1){ ... }
void func2(std::vector<int> & data2){ ... }
// main function version I
int main(){
std::vector<int> data1;
// prepare data1 for func1;
std::thread t1(func1, std::ref(data1));
std::vector<int> data2;
// prepare data2 for func2;
if (func1 in t1 is done){
t1(func2, std::ref(data2));
}
t1.join();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
此外,如果我想将上述main函数体放入循环中,如下所示。可能吗?如果是这样,怎么办?
//main function version II
int main(){
std::vector<int> bigdata1;
std::vector<int> bigdata2;
std::thread t1; // Can I do this without telling t1 …Run Code Online (Sandbox Code Playgroud) 我正在开发一个使用 boost 1.61 的 C++ 项目,我正在用 std 调用替换 boost,是否有 boost::this_thread::interruption_point() 的替代方法?