มนุษย์มักมีความโลภไม่มีที่สิ้นสุด นักวิทยาศาสตร์คอมพิวเตอร์เองก็เช่นกัน ขั้นแรกก็อยากจะให้เครื่องกลทำงานแบบอัตโนมัติและควบคุมสั่งการได้ ก็เลยคิดเครื่อง Z3 ขึ้นมา

เมื่อมันทำงานแบบอัตโนมัติได้แล้ว ก็พยายามจะเร่งให้มันทำงานได้ด้วยความเร็วที่เพิ่มขึ้น ก็เลยใช้เทคโนโลยี VLSI ผนวกเข้าไป

หลังจากนั้นเมื่อเห็นว่ามันทำงานได้เร็วจี๋แล้ว ก็เริ่มคิดว่าถ้าทำได้ควรจะทำให้คอมพิวเตอร์มันมี CPU หลาย ๆ ตัวช่วยกันทำงานดีกว่า ก็เลยสร้างเป็น Multi-Processing ขึ้นมา

เมื่อเห็นว่ามันแบ่งงานกันได้แบบนี้แล้ว ก็เลยสร้างกลไกเพื่อเอื้อประโยชน์ให้ระบบปฏิบัติการสามารถสั่งให้โปรแกรมหลาย ๆ ตัวทำงานได้ในคราวเดียว ก็เลยคิดค้น Multi-Tasking ขึ้นมาอีก

เท่านั้นยังไม่พอ พอเห็นว่ามีโปรแกรมหลาย ๆ ตัวทำงานได้ในคราวเดียวในระบบปฏิบัติการแล้ว ก็ยังจะคิดต่อไปอีกว่าโปรแกรมแต่ล่ะตัว ก็น่าจะมีงานย่อย ๆ เล็ก ๆ ทำขนานกันไปกับงานหลักของโปรแกรมนั้น ๆ ด้วย จึงเกิดเป็น Multithreading ขึ้นมาเป็นจังหวะสุดท้าย

เมื่อมองจากขั้นตอนเหล่านี้แล้ว เราจะพบว่าคอมพิวเตอร์นั้นทรงพลังในด้านความเร็วมาก ที่เหลือจึงเป็นธุระของนักพัฒนาซอฟต์แวร์ ที่จะดึงเอาขุมพลังของคอมพิวเตอร์ออกมาใช้งาน

เดี๋ยวนี้ระบบปฏิบัติการรุ่นใหม่ ๆ ล้วนมี kernel ที่สนับสนุนการทำ Multithreading ครับ อีกทั้งภาษาคอมพิวเตอร์และ IDE รุ่นใหม่ ๆ ก็สนับสนุน Multithreading เช่นกัน

ดังนั้นการที่เราจะสร้างซอฟต์แวร์ใด ๆ ขึ้นมาตัวนึง แล้วจะใช้ขีดความสามารถของการทำ Multithreading หรือเปล่า จึงขึ้นอยู่กับปัจจัยหลาย ๆ อย่างเป็นสำคัญ

  1. ปัจจัยแรกคงเป็นโจทย์ที่ได้มา ว่าโจทย์นั้นจำเป็นที่จะต้องใช้กลไก Multithreading ในระดับแค่ไหน ถ้าเลี่ยงได้ เลี่ยงได้มั้ย?
  2. ปัจจัยที่สองเป็นเรื่องของงบประมาณ อย่างที่เรารู้ ว่าการออกแบบพิมพ์เขียวสำหรับซอฟต์แวร์ที่ใช้กลไก Multithreading นั้นไม่ใช่เรื่องง่าย เพราะกลไกดังกล่าว ไม่ใช่กลไกแบบ Single Thread ซึ่งมีแค่งานหลักงานเดียว แต่มันคือ Multi Thread ซึ่งมีงานหลักและงานย่อย ๆ ทำขนานกันไป
  3. ปัจจัยที่สามเป็นเรื่องของทักษะในการพัฒนาซอฟต์แวร์ ของทีมพัฒนาซอฟต์แวร์ ว่าจะสามารถสร้างซอฟต์แวร์โดยใช้กลไก Multithreading ได้ตามพิมพ์เขียวที่เขียนเอาไว้มั้ย?

โดยส่วนตัวแล้วมองว่า หากซอฟต์แวร์ที่ต้องสร้าง มีความจำเป็นต้องใช้ความเร็วสูงในการประมวลผล เช่น Speech Recognition, Text To Speech, Voice Recognition หรือ Natural Language Processing ก็จำเป็นอย่างมาก ที่จะต้องออกแบบให้ซอฟต์แวร์ดังกล่าว ดึงพลังความสามารถของคอมพิวเตอร์และระบบปฏิบัติการออกมาใช้ ด้วยกลไกการเขียนโปรแกรมแบบ Multithreading

แต่หากว่าซอฟต์แวร์ที่ต้องสร้าง เป็น Web-based, เป็นซอฟต์แวร์ ERP, เป็นซอฟต์แวร์ระบบค้าปลีก ก็คงไม่จำเป็นต้องใช้กลไก Multithreading กระมังครับ

ดังนั้นการที่เราจะสร้างซอฟต์แวร์ขึ้นมาตัวนึง จึงจำเป็นอย่างยิ่งที่จะต้องพิจารณาจากหลาย ๆ ด้าน ซึ่งสำหรับผมแล้ว กุญแจหลักสุดท้ายสำหรับการตัดสินใจ คงเป็น “งบประมาณ” นั่นเอง

เงินล้วน ๆ ครับ 😛 ไม่เชื่อลองถามบริษัทเอกชนทั้งหลาย ที่ดำเนินธุรกิจด้านซอฟต์แวร์ดูสิ เขาคิดเหมือนผมทั้งนั้นแหล่ะ 🙂

[tags]z3,multiprocessing,multitasking,multithreading,งบประมาณ[/tags]

Related Posts

5 thoughts on “Multithreading

  1. ถะ ถะ ถะ ถูกต้องนะครับบบบบ

    เชื่อครับ (โดยไม่ต้องไปถามบริษัทเอกชนทั้งหลาย ที่ดำเนินธุรกิจด้านซอฟต์แวร์) เราเลือกเทคโนโลยีที่เหมาะสมมาใช้งานเพื่อแก้ปัญหา แต่เงินจะเป็นตัวบอกว่าเราจะได้ใช้เทคโนโลยีที่เหมาะสมนั้นแก้ปัญหาหรือไม่ (^ ^)

  2. อืมๆ เงินนี่เป็นผลต่อเทคโนโลยีขนาดนั้นเลยเหรอนี่ แล้วจะทำอย่างไรครับ ให้เงินนั้น ไม่มีผลต่อการทำงานของเรา

  3. คนที่มีความสามารถในการเขียนโปรแกรมเก่งๆ หรือมีประสบการณ์สูงๆ ย่อมโก่งค่าตัวให้ได้ค่าตัวแพงๆ ซึ่งอาจเป็นเหตุผลหนึ่ง ที่ทำให้บริษัทเอกชนที่พัฒนาซอร์ฟแวร์ ต้องใช้เงินล้วนๆ ในการดำเนินธุรกิจ ในยุคแห่งข้อมูลข่าวสาร เฉกเช่นทุกวันนี้

  4. ผมกำลังคิดอยู่อ่ะครับคุณ patr, น้องโอ, คุณเดย์ ว่าจะทำไงดี้น้อ เราถึงจะแยกกระแสเงินสดออกจากธุรกิจได้ เอ๊ะ มันจะเป็นไปได้ไงเนี่ย?

  5. ถ้ากลับไปสู่ยุค ใช้ ของแลกของหละคับ จะแยกได้หรือเปล่า หรือจริงๆแล้วแนวความคิดของกระแสเงินสดมีมานานแล้ว แต่ว่าเปลี่ยนรูปแบบตัวแทน???

    ปล ผมก็คิดไปเรื่อยเปื่อยหนะครับพี่ไท้

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *