วัฏจักรชีวิตของเธรดใน C#
เธรด (Thread) เป็นกระบวนการเบา (lightweight process) ที่กำหนดการควบคุม (flow of control) ที่ไม่ซ้ำกัน วัฏจักรชีวิตเริ่มต้นเมื่อสร้างอินสแตนซ์ของ System.Threading.Thread และสิ้นสุดเมื่อเธรดสิ้นสุดการทำงานหรือถูกยกเลิก
สถานะต่างๆ ของเธรด
1. สถานะ Unstarted (ยังไม่เริ่ม)
สร้างอินสแตนซ์เธรดแล้วแต่ยังไม่เรียกเมธอด Start()
2. สถานะ Ready / Running (พร้อม/กำลังทำงาน)
เธรดพร้อมทำงานและรอรอบ CPU หรือกำลังถูกประมวลผล
3. สถานะ Not Runnable (ไม่สามารถรันได้ชั่วคราว)
เธรดไม่สามารถทำงานได้เมื่อ:
- เรียก
Thread.Sleep()- หยุดนิ่งชั่วคราว - เรียก
Wait(),Join()- รอเธรดอื่นหรือล็อก - บล็อกโดย I/O operations - รอการอ่าน/เขียนข้อมูล
4. สถานะ Dead / Terminated (สิ้นสุด/ตาย)
เธรดทำงานเสร็จสิ้นหรือถูกยกเลิกด้วย Abort() (ไม่แนะนำใน .NET Core/.NET 5+)
ตัวอย่าง: สร้างและเริ่มเธรด
using System;
using System.Threading;
namespace Demo
{
class Program
{
static void Main(string[] args)
{
Thread th = Thread.CurrentThread;
th.Name = "MainThread";
Console.WriteLine($"This is {th.Name}");
Console.ReadKey();
}
}
}
ผลลัพธ์
This is MainThread
แผนภาพสรุปวัฏจักรชีวิต
Unstarted → Start() → Ready ↔ Running
↑ ↓
Sleep/Wait/ ← I/O Block
Join ↓
↓ Dead/Terminated
Abort/Complete
หมายเหตุ: ใน .NET Core/.NET 5+ ควรใช้ Task และ async/await แทนการจัดการเธรดโดยตรง เพื่อความปลอดภัยและประสิทธิภาพที่ดีกว่า