2011-03-24 99 views
7

我有这样的事情是incorect:如何添加增强线程矢量

vector<boost::thread> vec; 
for(int agent = 1; agent <= numAgents; ++agent) 
{ 
    boost::thread agentThread(sellTickets, agent, numTickets/numAgents); 
    vec.push_back(agentThread); 
} 

也许我应该补充的指针,以提高::线程在载体中,但我不知道如何添加动态分配的线程,我应该如何做到这一点?

谢谢。

回答

23
  • 你必须有,以便使你的代码工作的支持移动语义编译器,
  • 或使用vector<shared_ptr<boost::thread>>下面类似的代码:

    vec.push_back(make_shared<boost::thread>(sellTickets, agent, numTickets/numAgents)); 
    
  • 或使用boost::thread_group

+1

谢谢你,thread_groups工作对我来说,不知道他们,我学到新的东西,如果你解释为什么它不工作:) – Kobe 2011-03-24 09:05:07

+1

可能是有帮助吗? – nabulke 2011-03-24 09:05:12

+1

@nabulke - 它不起作用,因为你不能复制一个线程。这会使它成为两个线程吗?它将在C++ 0x中更好地工作,您可以移动对象而不是复制它们。 – 2011-03-24 09:37:40