क्या सी ++ 11 में boost::thread_group
जैसी कोई बात है?बढ़ावा :: सी ++ 11 में thread_group?
मैं अपने प्रोग्राम को boost:thread
से C++ 11 थ्रेड तक उपयोग करने की कोशिश कर रहा हूं और कुछ भी समकक्ष नहीं ढूंढ पाया।
क्या सी ++ 11 में boost::thread_group
जैसी कोई बात है?बढ़ावा :: सी ++ 11 में thread_group?
मैं अपने प्रोग्राम को boost:thread
से C++ 11 थ्रेड तक उपयोग करने की कोशिश कर रहा हूं और कुछ भी समकक्ष नहीं ढूंढ पाया।
नहीं, सी ++ 11 में सीधे boost::thread_group
के बराबर कुछ भी नहीं है। यदि आप चाहते हैं कि आप एक कंटेनर हैं तो आप std::vector<std::thread>
का उपयोग कर सकते हैं। इसके बाद आप प्रत्येक तत्व, या जो कुछ भी join()
पर कॉल करने के लिए या तो for
वाक्यविन्यास या std::for_each
का उपयोग कर सकते हैं।
2012 से इस समस्या का बेहतर समाधान रहा है? – pyCthon
मैं यह जोड़ना चाहता हूं कि 'बूस्ट :: थ्रेड_ग्रुप' में वास्तव में कोई जादू नहीं है, यह थ्रेड के वेक्टर ("थोड़ा और" कुछ उपयोगिता कार्यों जैसे 'join_all' और' create_thread') से थोड़ा अधिक है। –
thread_group
इसे सी ++ 11 और सी ++ 14 मानकों में नहीं बनाया।
लेकिन कोई समाधान सरल है:
std::vector<std::thread> grp;
// to create threads
grp.emplace_back(functor); // pass in the argument of std::thread()
void join_all() {
for (auto& thread : grp)
if (thread.joinable())
thread.join();
}
बूस्ट धागे और सी ++ 11 धागे अलग हैं। मैं व्यक्तिगत रूप से अधिक पूर्ण एपीआई (और उदाहरण के थ्रेड स्थानीय भंडारण के वर्तमान कार्यान्वयन की कमी) के कारण बूस्ट थ्रेड का उपयोग करता रहता हूं। –