0
我有一些工作需要在单独的线程中完成,工作是在对象的std::vector<T>
上完成的。创建线程,在循环中为它分配函数并执行
我需要做的工作,然后在主线程中,等待所有的线程与join()
。
我这样做了以下方法,但我认为这不是一个好主意,因为我只有一个指针,并且它指向循环的每个迭代中的其他内容。
struct properties
{
explicit properties(someobj obj) : obj_(obj) {}
void operator()() { /*do something*/ }
someobj obj_;
};
boost::shared_ptr<boost::thread> t;
for (size_t tst = 0; tst <= myvector.size() - 1; ++tst)
{
properties props(myvector[tst]);
t = boost::shared_ptr<boost::thread>(new boost::thread(props));
}
//get main thread to wait till all t's are done, however is this a smart way to wait on multiple t's?? Which t is it going to wait on?
t->join();
可有人建议这样做的更好的办法?我应该制作vector<boost::shared_ptr<boost::thread>>
并通过它们并通过我的对象向量进行循环?
我第二个这个。如果你能够使用C++ 11,你可能也想看看那里的并发性东西。 – LiMuBei