Mutex и синхронизация потоков - C#

Узнай цену своей работы

Формулировка задачи:

Задача, как сказал руководитель, на три строчки, но не имею ни малейшего понятия как ее решать. Есть три потока. При помощи одного mutex'а нужно сделать так, чтобы запуская потоки в любом порядке, работали они в строгой последовательности. Т.е. чтобы можно было написать: поток2.Start(); поток1.Start(); поток3.Start(); а отработали они: поток1 - поток2 - поток3. Help

Решение задачи: «Mutex и синхронизация потоков»

textual
Листинг программы
     class Program
    {
        static void Main(string[] args)
        { 
            Mutex mutex = new Mutex();
            MyTh one = new MyTh(mutex, 1);
            MyTh two = new MyTh(mutex, 2);
            MyTh three = new MyTh(mutex, 3);
            Thread thOne = new Thread(one.Run);
            Thread thTwo = new Thread(two.Run);
            Thread thThree = new Thread(three.Run);
            thThree.Start();
            thTwo.Start();
            thOne.Start();
        }
    }
 
    class MyTh
    {
        private int number;
        private Mutex mutex;
        public MyTh(Mutex mutex, int number)
        {
            this.mutex = mutex;
            this.number = number;
        }
        public void Run()
        {
            for (int i = 0; i < this.number; i++)
            {
                mutex.WaitOne();
                mutex.ReleaseMutex();
                Thread.Sleep(10);
            }
            Console.WriteLine("Thread {0} work.", this.number);
        }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.8 из 5
Похожие ответы