ฉันต้องการทดสอบกับเธรดในโปรเซสเซอร์แบบมัลติคอร์เช่นสร้างโปรแกรมที่ใช้สองเธรดที่แตกต่างกันซึ่งประมวลผลโดยแกนประมวลผลที่แตกต่างกันสองคอร์
อย่างไรก็ตามมันไม่ชัดเจนสำหรับฉันในระดับที่เธรดจะถูกจัดสรรให้กับคอร์ที่ต่างกัน ฉันสามารถจินตนาการสถานการณ์ต่อไปนี้ (ขึ้นอยู่กับระบบปฏิบัติการและการใช้ภาษาโปรแกรม):
- การจัดสรรเธรดได้รับการจัดการโดยระบบปฏิบัติการ เธรดถูกสร้างขึ้นโดยใช้การเรียกใช้ระบบปฏิบัติการและหากกระบวนการเกิดขึ้นกับโปรเซสเซอร์แบบมัลติคอร์ระบบปฏิบัติการจะพยายามจัดสรร / กำหนดเธรดที่แตกต่างกันโดยอัตโนมัติบนแกนที่ต่างกัน
- การจัดสรรเธรดได้รับการจัดการโดยการใช้ภาษาการเขียนโปรแกรม การจัดสรรเธรดให้กับคอร์อื่นต้องใช้การเรียกของระบบพิเศษ แต่ไลบรารีเธรดมาตรฐานการเขียนโปรแกรมภาษาจะจัดการสิ่งนี้โดยอัตโนมัติเมื่อฉันใช้การใช้เธรดมาตรฐานสำหรับภาษานั้น
- การจัดสรรเธรดต้องถูกโปรแกรมอย่างชัดเจน ในโปรแกรมของฉันฉันต้องเขียนรหัสที่ชัดเจนเพื่อตรวจสอบจำนวนคอร์ที่มีอยู่และการจัดสรรเธรดที่แตกต่างให้กับคอร์ที่แตกต่างกันโดยใช้ฟังก์ชั่นห้องสมุด
เพื่อให้คำถามมีความเฉพาะเจาะจงยิ่งขึ้นลองจินตนาการว่าฉันได้เขียนแอพพลิเคชั่นแบบมัลติเธรดใน Java หรือ C ++ บน Windows หรือ Linux แอปพลิเคชันของฉันจะดูและใช้หลายคอร์อย่างน่าอัศจรรย์เมื่อทำงานบนโปรเซสเซอร์แบบมัลติคอร์หรือไม่ (เพราะทุกอย่างได้รับการจัดการโดยระบบปฏิบัติการหรือโดยเธรดไลบรารีมาตรฐาน) หรือฉันต้องแก้ไขรหัสของฉันเพื่อรับรู้ถึงหลายแกน ?