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); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д