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

+1

उपयोगी हो सकता है कुछ नया सीखा? – nabulke

+1

@nabulke - यह काम नहीं करता है, क्योंकि आप धागे की प्रतिलिपि नहीं बना सकते हैं। क्या यह दो धागे बना देगा? यह सी ++ 0x में बेहतर काम करेगा जहां आप उन्हें कॉपी करने के बजाय ऑब्जेक्ट्स ले जा सकते हैं। –

संबंधित मुद्दे