Синхронизация пула потоков - C#
Формулировка задачи:
Всем привет! Задаю я, наверное, такой вопрос не первый и уж явно не последний.
Тема такая:
В чём соль ? mre.WaitOne(); активируется тогда, когда завершается второй поток из пула, иногда бывают ситуации, когда первый заканчивается позже, чем второй - значит теряются данные. Как сделать так, чтобы ожидание было на весь пул, а не на один поток ?
Листинг программы
- using (ManualResetEvent mre = new ManualResetEvent(false))
- {
- ThreadPool.QueueUserWorkItem(delegate { Chance(5000000); });
- ThreadPool.QueueUserWorkItem(delegate { Chance(5000000); mre.Set(); });
- mre.WaitOne();
- }
Решение задачи: «Синхронизация пула потоков»
textual
Листинг программы
- using (CountdownEvent cde = new CountdownEvent(2)) {
- ThreadPool.QueueUserWorkItem(delegate { DoWork(); cde.Signal(); });
- ThreadPool.QueueUserWorkItem(delegate { DoWork(); cde.Signal(); });
- cde.Wait();
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д