Auto reset event
Доки не прийде сигнал інші не можуть писати в файл
Сигнал are.Set() можна дати і з main після затримки, що зруйнує послідовну роботу,
цю проблему вирішує Mutex
// true - сигнал першому почати роботу
static AutoResetEvent are = new AutoResetEvent(true);
static void Main(string[] args)
{
for (int i = 0; i < 5; i++)
{
// new Thread(Write).Start();
Task.Run(() => Write());
}
Console.ReadKey();
}
public static void Write() {
are.WaitOne(); // заборонити доступ
Console.WriteLine("START WRITING> " + Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(2000);
Console.WriteLine("END WRITING " + Thread.CurrentThread.ManagedThreadId);
are.Set(); // Сигнал, можна іншим потокам отримати доступ
}
START WRITING> 10
END WRITING 10
START WRITING> 12
END WRITING 12
START WRITING> 11
END WRITING 11
START WRITING> 13
END WRITING 13
START WRITING> 14
END WRITING 14