Multi-task and Multi-tread
ก่อนที่เราจะมาทำความรู้จัก Multi-task และ Multi tread เราต้องรู้จัก Multi processing เสียก่อน เริ่มจากความหมายของ multi processing
Multi processing คือการสั่งให้คอมพิวเตอร์ของเราสามารถประมวลผลสิ่งต่างๆได้พร้อมกันในเวลาเดียวกันเช่นเราสามารถเปิด web browser เล่นวีดีโอพร้อมกับเล่นเกมได้ไปพร้อมๆกัน ซึ่งเราสามารถแบ่งให้ทำงานหลายๆอย่างได้พร้อมกันโดยขึ้นอยู่กับจำนวน core และ จำนวน thread ของ CPU ที่สามารถรับได้

ตัวอย่างจำนวน core และ thread ของ CPU intel i5 Gen12
ยิ่งจำนวนของ core เยอะเราก็จะสามารถทำได้หลาย process มากยิ่งขึ้น โดยการทำงานหลาย process จะถูกแบ่งออกเป็นย่อยๆสองอย่างคือ
- Multi-task
- Multi-thread
ซึ่งทั้งสองอย่างจะมีความคล้ายคลึงกัน แต่จะมีสิ่งที่แตกต่างกันจะอธิบายลงในด้านล่างนี้
Multi task คือการที่เราต้องการจะทำงานหลายๆอย่างพร้อมกัน โดยที่งานเหล่านั้นจะเกี่ยวข้องหรือไม่เกี่ยวกันก็ได้ยกตัวอย่างเช่น เราเปิดคอมพิวเตอร์ของเราขึ้นมา ฟังเพลง เล่นเกม และ อัดวิดีโอไปด้วย จะเห็นได้ว่า ณ ตอนนี้ คอมพิวเตอร์ของเราได้ทำการ Run 3 task ขึ้นมาก็คือ
- ฟังเพลง
- เล่นเกม
- อัดวีดีโอ
แต่ละ task ก็จะแบ่ง memory ใน CPU กันและทำการรันไปพร้อมๆกันทำให้เราทำงานได้หลากหลายขึ้นในเวลาเดียวกัน

ภาพการแบ่งการใช้ทรัพยากรณ์ของ CPU เพื่อทำ Task ต่างๆพร้อมๆกัน
Multi thread คือการแบ่งตัวโปรแกรมย่อยเป็นส่วนต่างๆเพื่อแยกกันประมวลผลในเวลาเดียวกันโดยใช้ทรัพยากรที่ได้จากการจัดสรรค์มาจาก CPU ให้ทำใน task นั้นๆ เช่นถ้าเราเล่นเกม FPS เกมหนึ่ง เมื่อเราสั่งคำสั่งให้ยิงด้วยการคลิกเข้าไป CPU เราต้องเริ่มทำการประมวลผลดังนี้
- ระบบคำนวณระยะยิง
- คำนวณว่า ยิงโดนเป้าหมายหรือไม่
- คำนวณจำนวณ HP ที่ลดลงไป
- แสดงผลกราฟฟิคแสง
- เล่นเสียงปืนที่ยิงออกมา
จะเห็นได้ว่าการคลิกครั้งเดียวโปรแกรมจะต้องทำการรันฟังค์ชั่นมากมายในเวลาเดียวกัน ถ้าเราเขียนโปรแกรมแบบ single thread ธรรมดาจะทำให้เกิดความไม่สอดคล้องของภาพและเสียงได้ และยังใช้เวลาในการประมวลผลที่มาก กว่า

ภาพแสดงการแบ่ง Thread programming เพื่อลดระยะเวลาคำนวณทั้งหมด
จากภาพประกอบจะเห็นได้ว่าเมื่อแบ่งการคำนวณเป็นส่วนย่อยๆแล้วจะทำให้เราสามารถประมวลผลได้แบบขนานกัน ซึ่งก็คือหัวใจหลักของ multi thread เอง
Multi task | Multi thread |
---|---|
จำนวน task ที่ทำได้ขึ้นอยู่กับความสามารถของ CPU | จำนวน thread ที่ขยายได้ขึ้นอยู่กับ CPU ที่กำหนดให้และยิ่ง thread เยอะยิ่งกินไฟเพิ่ม |
เมื่อมีหลาย task, CPU จะสลับกันทำในแต่ละ task | เมื่ อมีหลาย thread, CPU จะสลับกันทำในแต่ละ thread เช่นกัน |
ในแต่ละ task จะใช้ memory ของใครของมัน | ในแต่ละ thread จะใช้ memory รวมกัน |
Multi task จะใช้หลักการเดียวกับ multi processing (ทำหลายอย่างพร้อมกัน เพื่อให้ได้หลายผลลัพธ์) | Multi thread จะมีหลักการคล้ายกันกับ Multi processing แต่ไม่ใช่ (เพราะแบ่งทำหลายอย่างเพื่อให้ได้ผลลัพธ์เดียว) |
ลำดับการทำ Multi task. CPU จะเป็นคนเรียงลำดับการทำก่อนหลังให้ | ลำดับการทำ Multi thread. CPU ก็จะเป็นคนเรียงลำดับการทำก่อนหลังให้เช่นกัน |
ความเร็วในการประมวลผลช้ากว่า Multi thread | ความเร็วในการประมวลผลเร็วกว่า Multi task |
การปิด task ที่ไม่อยากใช้งานแล้วใช้เวลานานกว่า | การปิด threadที่ไม่อยากใช้งานแล้วใช้เวลาเร็วกว่า |
มีการแบ่งแยกและป้องกันการใช้ memory ระหว่าง task โดยอัตโนมัติ | ต้องแบ่งแยกการใช้และลำดับการใช้ memory เองในโปรแกรม |
เหมาะสำหรับพัฒนาโปรแกรมให้เร็วขึ้น | เหมาะสำหรับพัฒนา OS ให้เร็วขึ้น |
อ้างอิง :