У меня проблема, связанная с пространством имен System.Threading
Microsoft .NET. В этом пространстве имен определены многие классы, чтобы помочь мне управлять потоками.
Что ж, у меня проблема, но я не знаю, что использовать, MSDN расплывчата, и я до сих пор не понимаю, какие классы что делают. в частности, моя проблема касается синхронизации.
У меня есть определенное количество потоков (рассмотрим N потоков). В определенный момент поток должен остановиться и ждать, пока хотя бы один из других потоков что-то сделает. Как только один из N - 1 потоков выполнил определенную задачу, этот поток уведомляет, и остановленный поток сможет продолжить.
Так что это просто проблема синхронизации: поток должен ждать сигнала, вот и все.
В System.Threading
предусмотрено множество классов для решения проблем синхронизации. Есть WaitHandle
(s), есть AutoResetEvent
(s), есть ManualResetEvent
(s) и так далее ...
Который должен Я использую?
Мой вопрос: может ли кто-нибудь резюмировать мне, какой класс мне следует использовать для решения моей проблемы? Не могли бы вы рассказать о наиболее важных различиях между этими или другими классами?
Дело в том, что я не совсем понял, какой класс отвечает за синхронизацию: в чем разница, например, между WaitHandle
и AutoResetEvent
или ManualResetEvent
?
Для решения многих проблем с потоками .net предоставляет блокировку
и класс Monitor
. Подходит ли эта пара для моих нужд?
Спасибо