การกำหนด
1,805 ของคุณหัวข้อไม่ทำงานพร้อมกัน พวกเขาแลกเปลี่ยน แกนหนึ่งรันบิตของเธรดจากนั้นตั้งค่าไว้เพื่อรันบิตของเธรดอื่น แกนอื่น ๆ ทำเช่นเดียวกัน รอบและรอบกระทู้ดำเนินการเล็กน้อยในเวลาไม่ได้ทั้งหมดในครั้งเดียว
ความรับผิดชอบที่สำคัญของระบบปฏิบัติการ (ดาร์วินและ macOS) คือการกำหนดเวลาที่จะให้เธรดดำเนินการบนแกนกลางใด
กระทู้จำนวนมากไม่มีงานต้องทำและเช่นนั้นถูกทิ้งให้อยู่เฉยๆและไม่ได้กำหนดเวลาไว้ ในทำนองเดียวกันหลายเธรดอาจรอทรัพยากรบางอย่างเช่นข้อมูลที่จะดึงจากที่เก็บข้อมูลหรือการเชื่อมต่อเครือข่ายที่จะเสร็จสมบูรณ์หรือข้อมูลที่จะโหลดจากฐานข้อมูล แทบจะไม่มีอะไรทำนอกจากตรวจสอบสถานะของทรัพยากรที่รออยู่เธรดดังกล่าวจะถูกกำหนดเวลาไว้ค่อนข้างสั้นหากเลย
โปรแกรมเมอร์แอปสามารถช่วยเหลือการดำเนินการจัดตารางเวลานี้ได้โดยการนอนเธรดของเธอเป็นระยะเวลาหนึ่งเมื่อเธอรู้ว่าการรอทรัพยากรภายนอกจะใช้เวลาสักครู่ และถ้าเรียกใช้ลูปที่“ แน่น” ซึ่งมี CPU มากโดยไม่มีสาเหตุที่ต้องรอทรัพยากรภายนอกโปรแกรมเมอร์สามารถแทรกการเรียกไปยังอาสาสมัครเพื่อตั้งค่าไว้ในเวลาสั้น ๆ เพื่อไม่ให้แกนกลางติดขัดและอนุญาตให้เธรดอื่นทำงาน
สำหรับรายละเอียดเพิ่มเติมโปรดดูที่หน้าวิกิพีเดีย multithreading
มัลติเธรดพร้อมกัน
สำหรับคำถามที่เชื่อมโยงของคุณกระทู้มีเหมือนกันที่นี่
ปัญหาหนึ่งที่มีค่าใช้จ่ายค่าใช้จ่ายในการสลับระหว่างหัวข้อเมื่อกำหนดโดยระบบปฏิบัติการ มีค่าใช้จ่ายอย่างมากในการยกเลิกการโหลดคำสั่งและข้อมูลของเธรดปัจจุบันจากคอร์จากนั้นโหลดคำแนะนำและข้อมูลของเธรดที่กำหนดเวลาไว้ถัดไป ส่วนหนึ่งของงานของระบบปฏิบัติการคือพยายามฉลาดในการจัดตารางเวลาเธรดเพื่อปรับค่าใช้จ่ายให้เหมาะสม
ผู้ผลิต CPU บางรายได้พัฒนาเทคโนโลยีเพื่อลดเวลานี้เพื่อให้สามารถสลับระหว่างเธรดได้เร็วขึ้นมาก อินเทลเรียกเทคโนโลยีHyper-Threading รู้จักกันในชื่อมัลติเธรด (SMT) พร้อมกัน
ในขณะที่คู่ของเธรดไม่ได้ดำเนินการพร้อมกันจริง ๆ การสลับเป็นไปอย่างราบรื่นและรวดเร็วจนทั้งสองเธรดดูเหมือนจะพร้อมกันอย่างแท้จริง วิธีนี้ใช้งานได้ดีว่าแต่ละคอร์นำเสนอตัวเองเป็นคู่ของคอร์เสมือนกับระบบปฏิบัติการ ยกตัวอย่างเช่นซีพียูที่เปิดใช้งาน SMT พร้อมคอร์ทางกายภาพสี่คอร์จะนำเสนอตัวเองต่อระบบปฏิบัติการเป็นซีพียูแปดคอร์
แม้จะมีการเพิ่มประสิทธิภาพนี้ยังมีค่าใช้จ่ายในการสลับระหว่างแกนประมวลผลเสมือนดังกล่าว เธรดที่ใช้ CPU มากเกินไปการส่งเสียงดังมากสำหรับเวลาในการเรียกใช้งานบนคอร์สามารถทำให้ระบบไม่มีประสิทธิภาพโดยที่ไม่มีเธรดใดที่ทำงานได้มากนัก เช่นเดียวกับลูกบอลสามลูกบนสนามเด็กเล่นที่แบ่งกันระหว่างเด็กเก้าคนกับการแบ่งปันระหว่างเด็กเก้าร้อยคนที่ไม่มีเด็กคนใดได้รับเวลาเล่นอย่างจริงจังกับลูกบอล
ดังนั้นจึงมีตัวเลือกในเฟิร์มแวร์ซีพียูที่ผู้ดูแลระบบสามารถโยนสวิตช์บนเครื่องเพื่อปิดการใช้งาน SMT หากเธอตัดสินใจว่าจะเป็นประโยชน์ต่อผู้ใช้ของเธอที่เรียกใช้แอพที่มี CPU ผูกไว้กับโอกาสน้อยมากสำหรับการหยุดชั่วคราว
ในกรณีเช่นนี้เรากลับมาที่คำถามดั้งเดิมของคุณ: ในสถานการณ์พิเศษนี้คุณต้องการ จำกัด การดำเนินการให้ไม่มีเธรดที่ใช้งานมากเกินไปเหล่านี้เกินกว่าที่คุณมีแกนประมวลผลทางกายภาพ แต่ให้ฉันทำซ้ำ: นี่เป็นสถานการณ์ที่ผิดปกติอย่างยิ่งที่อาจเกิดขึ้นในบางสิ่งบางอย่างเช่นโครงการการบดอัดข้อมูลทางวิทยาศาสตร์แบบพิเศษ แต่แทบจะไม่เคยใช้กับสถานการณ์ธุรกิจ / องค์กร / องค์กรทั่วไป