Tag Archives: Akka

สไตล์ของ parallel programming ในปัจจุบัน

ชี้แจง: จากคำทักท้วงของหลายๆ ท่าน พบว่าจริงๆ แล้ว blog นี้ควรจะชื่อว่า concurrent programming ไม่ใช่ parallel programming อ้างอิงจากคำศัพท์ที่เค้านิยมใช้กันครับ ขออภัยที่ให้ข้อมูลที่ผิดมา ณ​ ที่นี้ด้วยครับ

เมื่ออยู่ในยุคที่การพัฒนาความเร็วของฮาร์แวร์คอมพิวเตอร์เป็นไปด้วยการเพิ่ม core ของ CPU การเขียนโปรแกรมแบบ single thread ก็มีความสามารถไม่เพียงพอต่อการใช้ทรัพยากรของเครื่องให้คุ้มค่าอีกต่อไป เพราะโปรแกรมที่เขียนนั้นจะสามารถใช้งาน CPU ได้เพียงแค่ core เดียว วิธีการเขียนโปรแกรมที่ทำให้สามารถประมวลผลมากกว่า 1 สิ่งต่อหนึ่งช่วงเวลา เพื่อจะได้กระจายงานไปให้แต่ละ core ประมวลผลได้พร้อมๆ กัน เป็นแขนงหนึ่งของ การเขียนโปรแกรมแบบขนาน (parallel programming)

การเขียนโปรแกรมแบบขนานแบบหนึ่งที่เป็นที่นิยมที่สุดในหลายๆ ปีที่ผ่านมา คือ การเขียนโปรแกรมแบบ multi-threading คือการสร้าง thread ขึ้นมาเพื่อทำการประมวลผลแยกจากโปรแกรมหลัก แต่ปัญหาของการเขียนโปรแกรมแบบ multi-threading คือ เป็นการเขียนโปรแกรมที่ต้องการความชำนาญสูง เพราะโปรแกรมอาจจะเกิด race condition หรือ dead lock ได้ง่ายหากเขียนอย่างไม่รอบคอบเพียงพอ ซึ่งส่งผลให้เกิดบั๊กที่หาสาเหตุได้ยาก ทำให้การพัฒนาโปรแกรมเป็นไปได้ช้าและอาจเกิดความผิดพลาดสูง การเขียนโปรแกรมในสไตล์อื่นๆ ที่พยายามทำให้เขียนโปรแกรมแบบขนานได้ง่ายขึ้นจึงได้รับความนิยมมากขึ้นตามลำดับ

Continue reading

Advertisements