কম্পিউটার টিউটোরিয়াল

C#-এ থ্রেড ও থ্রেড সিঙ্ক্রোনাইজেশন (Mutex, Lock, ThreadPool)

মাল্টিথ্রেডেড অ্যাপ্লিকেশনে শেয়ার্ড রিসোর্সে একসাথে অ্যাক্সেস রোধ করতে সিঙ্ক্রোনাইজেশন প্রিমিটিভ ব্যবহার করা হয়। C#-এ প্রধানত lock, Mutex, Monitor, Semaphore, ThreadPool ব্যবহৃত হয়।

1. lock স্টেটমেন্ট (সর্বাধিক ব্যবহৃত)

private static readonly object _lock = new object();

public void SafeMethod()
{
    lock (_lock)
    {
        // ক্রিটিক্যাল সেকশন — একবারে একটি থ্রেড
    }
}

2. Mutex (প্রসেস-ক্রস সিঙ্ক্রোনাইজেশন)

private static Mutex _mutex = new Mutex(false, "Global\\MyAppMutex");

public void CrossProcessSync()
{
    _mutex.WaitOne();
    try
    {
        // শেয়ার্ড রিসোর্স অ্যাক্সেস
    }
    finally
    {
        _mutex.ReleaseMutex();
    }
}

3. ThreadPool (পুনঃব্যবহারযোগ্য থ্রেড)

using System.Threading;

ThreadPool.QueueUserWorkItem(state => 
{
    // ব্যাকগ্রাউন্ড কাজ
    Console.WriteLine("ThreadPool থ্রেডে চলছে");
});

সম্পূর্ণ উদাহরণ: Mutex দিয়ে সিঙ্গল ইনস্ট্যান্স অ্যাপ

using System;
using System.Threading;

class SingleInstanceApp
{
    private static Mutex _mutex = new Mutex(true, "{8F6F0AC4-B9A1-45FD-A8CF-72F04E6BDE8F}");
    
    static void Main()
    {
        if (!_mutex.WaitOne(TimeSpan.Zero, true))
        {
            Console.WriteLine("অ্যাপ্লিকেশন ইতিমধ্যে চলছে।");
            return;
        }
        
        try
        {
            Console.WriteLine("অ্যাপ্লিকেশন চলছে... আউট করার জন্য Enter চাপুন");
            Console.ReadLine();
        }
        finally
        {
            _mutex.ReleaseMutex();
        }
    }
}

সারসংক্ষেপ টেবিল

প্রিমিটিভব্যবহারস্কোপ
lockসরল, ফাস্টপ্রসেস-লোকাল
Mutexনামযুক্ত, প্রসেস-ক্রসসিস্টেম-ওয়াইড
Semaphoreগণনা-ভিত্তিক সিঙ্ক্রোনাইজেশনপ্রসেস/সিস্টেম
ThreadPoolকম দক্ষতায় থ্রেড ম্যানেজমেন্টপ্রসেস-লোকাল
  1. আইপি স্পুফিং কী এবং এটি কী জন্য ব্যবহৃত হয়?

  2. CMOS কী এবং এর কাজ কী? বিস্তারিত ব্যাখ্যা

  3. CMOS কী এবং এর ব্যবহার কী?

  4. "Lorem Ipsum" কী এবং কেন এটি ব্যবহার করা হয়?