मैं उपयोग std::for_eachके साथ std::execution::parसंरचनाओं के वेक्टर के रूप में प्रतिनिधित्व विशाल इनपुट पर जटिल गणना करने के लिए। अभिकलन को हार्डवेयर (नेटवर्क या डिस्क IO उदाहरण के लिए) से संबंधित किसी भी देरी की आवश्यकता नहीं है, यह "सिर्फ सीपीयू" अभिकलन है। मेरे लिए यह तर्कसंगत लगता है कि अधिक ओएस थ्रेड बनाने के लिए कोई अर्थ नहीं है जो हमारे पास हार्डवेयर वाले हैं; हालाँकि, Visual C ++ 2019 औसत 50 थ्रेड्स बनाता है, और कभी-कभी 500 तक भी केवल 12 हार्डवेयर थ्रेड होते हैं।
वहाँ के लिए गिनती समानांतर धागे सीमित करने के लिए एक रास्ता है hardware_concurrencyसाथ std::for_eachऔर std::execution::parएक ही तरीका उचित धागे बनाने के लिए गिनती के साथ प्रयोग के कस्टम कोड के लिए किया जाता है, या std::thread?
std::for_eachसे अन्य एल्गोरिदम की तुलना में बहुत कम स्तर है <algorithm>। मुख्य विचार के पीछे std::execution::parअनुक्रमिक के रूप में सरल के रूप में समानांतर कोड बना रहा है, और कम से कम कोड और शब्दार्थ परिवर्तन के साथ मौजूदा एल्गोरिदम के समानांतर।