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);
}
}