Execution Thread

Execution Thread คืออะไร

หากพูดถึงคำว่า Thread ในบริบทของการประมวลผลหรือ Execution Thread จะหมายถึงหน่วยย่อยที่สุดของการทำงานที่โปรแกรมสามารถดำเนินการได้ (a single sequence stream of execution within a process) หรือก็คือ “ลำดับของการทำงานเดี่ยว” ภายในกระบวนการ (Process) หนึ่งๆ นั่นเอง แต่ละเธรดจะทำงานอย่างอิสระ แต่ยังคงใช้ทรัพยากร (เช่น หน่วยความจำ) ร่วมกันกับเธรดอื่นๆ ภายในโปรเซสนั้นๆ

(Thread ของ CPU ให้ดูความหมายที่นี่)

หน้าที่สำคัญ:

  • การทำงานแบบ Multi-tasking ภายในโปรแกรมเดียว: ช่วยให้โปรแกรมสามารถทำงานหลายๆ อย่างพร้อมกันได้ในเวลาเดียวกัน โดยไม่ต้องสร้างหลายโปรเซส เช่น โปรแกรมประมวลผลคำที่สามารถพิมพ์งาน ตรวจสอบการสะกด และบันทึกไฟล์ไปพร้อมๆ กันได้
  • เพิ่มประสิทธิภาพการทำงาน: ทำให้โปรแกรมตอบสนองได้ดีขึ้นและทำงานได้รวดเร็วขึ้น โดยเฉพาะในระบบ Multi-core processors
  • การแบ่งงาน: ช่วยให้นักพัฒนาสามารถแบ่งงานใหญ่ๆ ออกเป็นส่วนย่อยๆ ที่ทำงานพร้อมกันได้ ทำให้โค้ดมีโครงสร้างที่ดีขึ้นและจัดการได้ง่ายขึ้น
  • การประหยัดทรัพยากร: เธรดใช้ทรัพยากรน้อยกว่าเมื่อเทียบกับการสร้างโปรเซสใหม่ เนื่องจากเธรดใช้ทรัพยากรร่วมกันกับโปรเซสหลัก

เกร็ดน่ารู้:

  • Thread vs. Process: ความแตกต่างที่สำคัญคือ Process แต่ละตัวมีพื้นที่หน่วยความจำและทรัพยากรของตัวเองแยกกัน ทำให้มีความเป็นอิสระและเสถียรภาพมากกว่า หาก Process หนึ่งล่ม อีก Process จะไม่ได้รับผลกระทบ ในขณะที่ Thread หลายๆ เธรดจะใช้ทรัพยากรของ Process เดียวกัน หากเธรดหนึ่งมีปัญหา อาจส่งผลกระทบต่อเธรดอื่นๆ ใน Process เดียวกันได้
  • User-level Threads vs. Kernel-level Threads:
    • User-level Threads: ถูกจัดการโดยไลบรารีของเธรดในพื้นที่ผู้ใช้ (User Space) โดยที่เคอร์เนลของระบบปฏิบัติการไม่ได้รับรู้ถึงเธรดเหล่านี้ การสลับเธรดจะทำได้เร็วกว่า แต่หากเธรดหนึ่งถูกบล็อก (เช่น รอ I/O) โปรเซสทั้งหมดจะถูกบล็อก
    • Kernel-level Threads: ถูกจัดการโดยเคอร์เนลของระบบปฏิบัติการโดยตรง การสลับเธรดอาจช้ากว่า แต่หากเธรดหนึ่งถูกบล็อก เธรดอื่นๆ ในโปรเซสเดียวกันยังคงทำงานต่อไปได้
  • Multi-threading: คือเทคนิคการเขียนโปรแกรมที่ใช้เธรดหลายๆ ตัว เพื่อให้โปรแกรมทำงานพร้อมกัน ซึ่งเป็นหัวใจสำคัญของการพัฒนาแอปพลิเคชันยุคใหม่ที่ต้องการประสิทธิภาพสูง

คำศัพท์ที่เกี่ยวข้อง:

  • Process (โปรเซส): โปรแกรมที่กำลังทำงานอยู่ (an instance of a computer program that is being executed) แต่ละโปรเซสมีหน่วยความจำและทรัพยากรของตัวเอง
  • Multi-tasking (มัลติทาสก์กิ้ง): ความสามารถของระบบปฏิบัติการในการรันหลายๆ โปรแกรมพร้อมกัน (หรือสลับการทำงานไปมาอย่างรวดเร็วจนเหมือนทำงานพร้อมกัน)
  • Concurrency (การทำงานพร้อมกัน): การที่หลายงานสามารถเริ่มต้น, ดำเนินการ, และจบลงในช่วงเวลาเดียวกันได้ อาจจะสลับกันทำหรือทำพร้อมกันจริงๆ ก็ได้
  • Parallelism (การทำงานแบบขนาน): การที่หลายงานทำงานพร้อมกันจริงๆ ในเวลาเดียวกัน มักจะเกิดขึ้นบนฮาร์ดแวร์ที่มีหลายคอร์/โปรเซสเซอร์
  • Synchronization (การซิงโครไนซ์): กลไกที่ใช้ในการควบคุมการเข้าถึงทรัพยากรที่ใช้ร่วมกันระหว่างเธรด เพื่อป้องกันปัญหาข้อมูลผิดพลาด (Data Inconsistency) เช่น Mutex, Semaphore

อุปกรณ์ที่เกี่ยวข้อง:

  • CPU (Central Processing Unit): หน่วยประมวลผลกลาง ทำหน้าที่ประมวลผลคำสั่งของโปรแกรม ซึ่งรวมถึงการจัดการและสลับการทำงานของเธรด
  • RAM (Random Access Memory): หน่วยความจำหลักที่ใช้ในการเก็บข้อมูลและคำสั่งของโปรแกรมที่กำลังทำงานอยู่ ซึ่งเธรดต่างๆ ในโปรเซสจะใช้ RAM ร่วมกัน
  • Multi-core Processor (โปรเซสเซอร์แบบหลายคอร์): CPU ที่มีหลายหน่วยประมวลผลในตัวเดียว ทำให้สามารถรันเธรดหลายๆ ตัวแบบขนานกันได้จริง

    กลับหน้าหลัก: พจนานุกรมคำศัพท์คอมพิวเตอร์ฉบับ DIY PC