Що таке ManualResetEvent?

Подія ManualResetEvent — це тип події, який найкраще розуміти як «логічне значення очікування», яке ефективно синхронізує доступ потоку до спільного стану, дозволяючи одному або декільком потокам чекати сигналу від одного або кількох інших потоків, де сигнал міг виникнути в минуле або може виникнути в будь-який час у майбутньому.

Коли потік починає дію, яка має бути завершена, перш ніж продовжаться інші потоки, він викликає ManualResetEvent. Скинути, щоб перевести ManualResetEvent у стан без сигналу.

AutoResetEvent і ManualResetEvent. AutoResetEvent дозволяє одному потоку, що очікує, під час виклику Set(), але ManualResetEvent дозволяє проходити всім потокам, що очікують, коли викликається Set().. ManualResetEvent починає блокувати під час виклику Reset(). Це діє як турнікет, який пропускає по одному.

Елементи керування не реагують: ви регулюєте температуру, але нічого не відбувається. Скидання можна відновити роботу елементів керування. HVAC працює без зупинки: система працює безперервно, не досягаючи заданої температури. Скидання може відновити належне функціонування циклу.

Ручне скидання використовується для машин, до яких люди можуть входити, і для ланцюгів аварійної зупинки, а автоматичне скидання використовується для машин, до яких люди не можуть входити. Скидання має відбуватися лише після усунення всіх небезпек, а скидання вручну безпечніше.

ManualResetEventSlim є легка реалізація ManualResetEvent . Він має кращу продуктивність і менше витрат, ніж ManualResetEvent. Ми можемо створити об’єкт за допомогою такого синтаксису, як ManualResetEvent : ManualResetEventSlim manualResetEvent = new ManualResetEventSlim(false);