Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

วัฏจักรชีวิตและสถานะของเธรด (Thread) ใน C#

วัฏจักรชีวิตของเธรดใน 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 แทนการจัดการเธรดโดยตรง เพื่อความปลอดภัยและประสิทธิภาพที่ดีกว่า