Multi-tasking Basic
ก่อนที่เราจะมาทำความรู้จัก 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 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 ให้เร็วขึ้น |
อ้างอิง :
https://www.geeksforgeeks.org/difference-between-multi-tasking-and-multi-threading/
Last updated