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