Объяснение текста о многопоточности в книге «C# 3.0 в двух словах»C#

Место общения программистов C#
Ответить
Anonymous
 Объяснение текста о многопоточности в книге «C# 3.0 в двух словах»

Сообщение Anonymous »

Читая C# 3.0 в двух словах Джозефа и Бена Альбахари, я наткнулся на следующий абзац (страница 673, первый абзац в разделе «Сигнализация с помощью ожидания и импульса»)

«Класс Monitor предоставляет еще одну сигнальную конструкцию через два статических методы, Wait и Pulse. Принцип заключается в том, что вы сами пишете логику сигнализации, используя специальные флаги и поля (заключенные в операторы lock), а затем вводите команды Wait и Pulse для уменьшения вращения процессора. Преимущество этого низкоуровневого подхода заключается в том, что используются только Wait, Pulse. lock, вы можете реализовать функциональность AutoResetEvent, ManualResetEvent и Semaphore, а также статических методов WaitHandle WaitAll и WaitAny. Кроме того, Wait и Pulse
может быть приемлемым в ситуациях, когда
все дескрипторы ожидания
недостаточно запрашиваются."

Мой вопрос: какова правильная интерпретация последнего предложения?
  • Ситуация с приличным/большим количеством дескрипторов ожидания, когда WaitOne() вызывается только изредка для какого-либо конкретного дескриптора ожидания.
  • A ситуация с приличным/большим количеством дескрипторов ожидания, когда более одного потока редко блокируется на каком-либо конкретном дескрипторе ожидания.
  • Некоторая другая интерпретация.
Буду также признателен за освещение примеров таких ситуаций и, возможно, как и/или почему они более эффективно обрабатываются с помощью Wait и Pulse, а не другими методами.
Я нашел текст в Интернете здесь

Подробнее здесь: https://stackoverflow.com/questions/232 ... a-nutshell
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»