2011-03-24 75 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