急求C++11的std:thread库的用法,需求如次
急求C++11的std::thread库的用法,需求如下
需要多次创建和销毁线程,可以重复利用局部的thread数组吗?我试了下,不论是thread t[10]还是thread *t[10]再new都不行,thread库似乎会越界崩溃。
------解决方案--------------------
http://blog.****.net/tujiaw/article/details/8245130
参考下
------解决方案--------------------
提到c++11的thread,有一本不可不读的好书
c++ concurrency in action
里面不但会教你multithread的原理,基础
讲解c++11的thread库中的各种设备该如何使用
还会告诉你如何创建thread pool
怎么设计concurrent code(concurrent的algorithms)
以及thread safe的data structure
无论是用来学习multithread的概念或是
学习c++11提供的thread库,都是一本不可多得的好书
------解决方案--------------------
主楼代码根据标准要求,需要调用 terminate()。原因在于 thread 对象析构的时候还是 joinable 的状态,所以在析构之前必须调用 join 或 detach,像这样。
#include <iostream>
#include <thread>
using namespace std;
void foo(int i)
{
cout<<"hello "<<i<<endl;
}
int main(int argc, const char * argv[])
{
thread t[10];
for(int i=0;i<10;i++)
t[i]=thread(foo,i);
for(int i=0;i<10;i++)
t[i]=thread(foo,i);
return 0;
}
需要多次创建和销毁线程,可以重复利用局部的thread数组吗?我试了下,不论是thread t[10]还是thread *t[10]再new都不行,thread库似乎会越界崩溃。
c++11
thread
------解决方案--------------------
http://blog.****.net/tujiaw/article/details/8245130
参考下
------解决方案--------------------
提到c++11的thread,有一本不可不读的好书
c++ concurrency in action
里面不但会教你multithread的原理,基础
讲解c++11的thread库中的各种设备该如何使用
还会告诉你如何创建thread pool
怎么设计concurrent code(concurrent的algorithms)
以及thread safe的data structure
无论是用来学习multithread的概念或是
学习c++11提供的thread库,都是一本不可多得的好书
------解决方案--------------------
主楼代码根据标准要求,需要调用 terminate()。原因在于 thread 对象析构的时候还是 joinable 的状态,所以在析构之前必须调用 join 或 detach,像这样。
#include <algorithm>
#include <iostream>
#include <thread>
using namespace std;
void foo(int i)
{
cout<<"hello "<<i<<endl;
}
int main ()
{
thread t[10];
for(int i=0;i<10;i++)
t[i]=thread(foo,i);
std::for_each(t,t+10,[](thread& t){t.join();});
for(int i=0;i<10;i++)
t[i]=thread(foo,i);
std::for_each(t,t+10,[](thread& t){t.join();});
}