การทำงานพร้อมกันที่ดีต้องมีมากกว่าการใช้เธรดบางตัวในแอปพลิเคชันและหวังว่าจะดีที่สุด มีช่วงของวิธีการที่โปรแกรมพร้อมกันสามารถเริ่มจากขนานที่น่าอับอายกับลำดับบริสุทธิ์ โปรแกรมใดก็ตามที่สามารถใช้กฎหมายของ Amdahlเพื่อแสดงให้เห็นว่าปัญหาหรืออัลกอริทึมที่ปรับขนาดได้นั้นเป็นอย่างไร คุณสมบัติสองประการสำหรับการใช้งานแบบขนานที่น่าอับอายคือ:
- ไม่มีสถานะที่แชร์ทุกฟังก์ชั่นขึ้นอยู่กับพารามิเตอร์ที่ส่งผ่าน
- ไม่สามารถเข้าถึงอุปกรณ์ทางกายภาพ (กราฟิกการ์ดฮาร์ดไดรฟ์ ฯลฯ )
มีคุณสมบัติอื่น ๆ แต่ด้วยเพียงแค่สองสิ่งนี้เราสามารถเข้าใจได้ว่าทำไมเกมโดยเฉพาะนั้นไม่ง่ายอย่างที่คุณคิดว่าจะใช้ประโยชน์จากหลายคอร์ สำหรับหนึ่งรูปแบบของโลกที่จะแสดงผลจะต้องมีการใช้ร่วมกันเป็นฟังก์ชั่นที่แตกต่างกันคำนวณฟิสิกส์การเคลื่อนไหวใช้ปัญญาประดิษฐ์ ฯลฯ ประการที่สองแต่ละเฟรมของเกมนี้จะต้องมีการแสดงผลบนหน้าจอด้วยกราฟิกการ์ด
เพื่อความเป็นธรรมผู้ผลิตเกมหลายรายใช้เอ็นจิ้นเกมที่ผลิตโดยบุคคลที่สาม มันใช้เวลาสักครู่ แต่เอ็นจิ้นเกมบุคคลที่สามเหล่านี้ตอนนี้ขนานกันมากกว่าที่เคยเป็นมา
มีความท้าทายด้านสถาปัตยกรรมที่ใหญ่กว่าในการจัดการกับการเกิดพร้อมกัน
การทำงานพร้อมกันสามารถมีได้หลายรูปแบบตั้งแต่การทำงานในพื้นหลังไปจนถึงการสนับสนุนสถาปัตยกรรมแบบเต็มสำหรับการทำงานพร้อมกัน บางภาษาให้คุณสมบัติการทำงานพร้อมกันที่ทรงพลังเช่นERLANGแต่คุณต้องคิดแตกต่างกันมากเกี่ยวกับวิธีการสร้างแอปพลิเคชันของคุณ
ไม่ใช่ทุกโปรแกรมที่ต้องการความซับซ้อนของการสนับสนุนมัลติคอร์อย่างสมบูรณ์ ตัวอย่างหนึ่งคือซอฟต์แวร์ภาษีหรือแอปพลิเคชันที่ขับเคลื่อนด้วยรูปแบบใด เมื่อเวลาส่วนใหญ่ของคุณถูกรอให้ผู้ใช้ทำบางสิ่งความซับซ้อนของแอพพลิเคชั่นแบบมัลติเธรดนั้นไม่ได้มีประโยชน์
บางแอปพลิเคชันให้ยืมตัวเองเพื่อแก้ปัญหาแบบขนานที่น่าอับอายมากขึ้นเช่นเว็บแอปพลิเคชัน ในกรณีนี้แพลตฟอร์มจะเริ่มขนานกันอย่างน่าอายและขึ้นอยู่กับคุณไม่จำเป็นต้องกำหนดความขัดแย้งของเธรด
บรรทัดล่าง:
ไม่ใช่ทุกแอปพลิเคชันที่ได้รับผลกระทบจริง ๆ โดยไม่ใช้ประโยชน์จากหลายเธรด (และดังนั้นจึงเป็นแกน) สำหรับคนที่ได้รับบาดเจ็บจากการที่บางครั้งการคำนวณไม่เป็นมิตรกับการประมวลผลแบบขนานหรือค่าใช้จ่ายในการประสานงานมันจะทำให้แอพลิเคชันที่เปราะบางมากขึ้น น่าเสียดายที่การประมวลผลแบบขนานยังคงไม่ง่ายอย่างที่ควรจะเป็น