Multi-task and Multi-thread

ก่อนที่เราจะมาทำความรู้จัก Multi-task และ Multi tread เราต้องรู้จัก Multi processing เสียก่อน เริ่มจากความหมายของ multi processing

Multi processing คืออะไร

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

ยิ่งจำนวนของ core เยอะเราก็จะสามารถทำได้หลาย process มากยิ่งขึ้น โดยการทำงานหลาย process จะถูกแบ่งออกเป็นย่อยๆสองอย่างคือ

  • Multi-task

  • Multi-thread

ซึ่งทั้งสองอย่างจะมีความคล้ายคลึงกัน แต่จะมีสิ่งที่แตกต่างกันจะอธิบายลงในด้านล่างนี้

Multi-task

Multi task คือการที่เราต้องการจะทำงานหลายๆอย่างพร้อมกัน โดยที่งานเหล่านั้นจะเกี่ยวข้องหรือไม่เกี่ยวกันก็ได้ยกตัวอย่างเช่น เราเปิดคอมพิวเตอร์ของเราขึ้นมา ฟังเพลง เล่นเกม และ อัดวิดีโอไปด้วย จะเห็นได้ว่า ณ ตอนนี้ คอมพิวเตอร์ของเราได้ทำการ Run 3 task ขึ้นมาก็คือ

  • ฟังเพลง

  • เล่นเกม

  • อัดวีดีโอ

แต่ละ task ก็จะแบ่ง memory ใน CPU กันและทำการรันไปพร้อมๆกันทำให้เราทำงานได้หลากหลายขึ้นในเวลาเดียวกัน

Multi-thread

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

  • ระบบคำนวณระยะยิง

  • คำนวณว่ายิงโดนเป้าหมายหรือไม่

  • คำนวณจำนวณ HP ที่ลดลงไป

  • แสดงผลกราฟฟิคแสง

  • เล่นเสียงปืนที่ยิงออกมา

จะเห็นได้ว่าการคลิกครั้งเดียวโปรแกรมจะต้องทำการรันฟังค์ชั่นมากมายในเวลาเดียวกัน ถ้าเราเขียนโปรแกรมแบบ single thread ธรรมดาจะทำให้เกิดความไม่สอดคล้องของภาพและเสียงได้ และยังใช้เวลาในการประมวลผลที่มาก กว่า

จากภาพประกอบจะเห็นได้ว่าเมื่อแบ่งการคำนวณเป็นส่วนย่อยๆแล้วจะทำให้เราสามารถประมวลผลได้แบบขนานกัน ซึ่งก็คือหัวใจหลักของ multi thread เอง

ความเหมือนและแตกต่างระหว่าง Multi-task กับ Multi-thread

Multi taskMulti 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 ให้เร็วขึ้น

อ้างอิง :

https://www.geeksforgeeks.org/difference-between-multi-tasking-and-multi-threading/

Last updated

Assoc. Prof. Wiroon Sriborrirux, Founder of Advance Innovation Center (AIC) and Bangsaen Design House (BDH), Electrical Engineering Department, Faculty of Engineering, Burapha University