ฉันใช้std::for_eachกับstd::execution::parเพื่อทำการคำนวณที่ซับซ้อนในการป้อนข้อมูลขนาดใหญ่ที่แสดงเป็นเวกเตอร์ของโครงสร้าง การคำนวณไม่ต้องการความล่าช้าใด ๆ ที่เกี่ยวข้องกับฮาร์ดแวร์ (เช่นเครือข่ายหรือดิสก์ IO) เป็นการคำนวณแบบ "just CPU" สำหรับฉันมันดูเหมือนว่าไม่มีเหตุผลที่จะสร้างเธรด OS เพิ่มเติมที่เรามีฮาร์ดแวร์ อย่างไรก็ตาม Visual C ++ 2019 จะสร้างเธรดโดยเฉลี่ย 50 เธรดและบางครั้งมากถึง 500 เธรดแม้ว่าจะมีเธรดฮาร์ดแวร์เพียง 12 เธรดเท่านั้น
มีวิธี จำกัด เธรดแบบขนานที่นับhardware_concurrencyด้วยstd::for_eachและstd::execution::parหรือวิธีเดียวในการสร้างจำนวนเธรดที่สมเหตุสมผลคือการใช้โค้ดที่กำหนดเองด้วยstd::thread?
std::for_eachและอัลกอริทึมอื่น ๆ จาก<algorithm>ส่วนหัว แนวคิดหลักที่อยู่เบื้องหลังstd::execution::parคือการสร้างโค้ดคู่ขนานให้ใกล้เคียงกับความเรียบง่ายตามลำดับและการอัลกอริธึมที่มีอยู่แบบขนานพร้อมกับการเปลี่ยนรหัสและซีแมนทิกส์น้อยที่สุด