Встроенный объект объекта

ОбъектСобытие

Модуль Event предоставляет объект события для совместных операций с общими данными. Он позволяет синхронизировать операции между несколькими волокнами (сопрограммами) для достижения совместной многозадачности. Объект события имеет три метода: wait, Pulse и Clear.Метод ожидания блокирует текущее волокно до тех пор, пока не произойдет событие, метод Pulse пробуждает все волокна, ожидающие события, а метод Clear сбрасывает флаг события на ЛОЖЬ. используяcoroutine.EventРазработчики модуля могут контролировать последовательность выполнения и обмен данными между волокнами для реализации сложной бизнес-логики.

Например, предположим, что нам нужно совместно использовать данные между двумя волокнами, но порядок их выполнения не определен. Вы можете контролировать порядок выполнения волокон через объект события, чтобы гарантировать, что одно волокно запускается до того, как будет выполнено другое. События волокна.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
const coroutine = require('coroutine'); var evt = new coroutine.Event(); coroutine.start(function() { console.log('[1] wait for event'); evt.wait(); console.log('[1] receive event'); }); coroutine.start(function() { loop: for (var i = 0; i < 10; i++) { console.log('[2] do some work'); if (i === 5) { evt.pulse(); } coroutine.sleep(1000); } });

В приведенном выше примере мы создали объект события evt, использовали метод ожидания в волокне 1 для ожидания запуска события и использовали метод импульса для запуска события в волокне 2. Когда i равно 5, волокно 2 запускает event., волокно 1 пробуждается посредством прослушивания событий и продолжает выполнение. В этом процессе между двумя волокнами не используются блокировки или другие инструменты синхронизации, но они обеспечивают синхронизацию данных на уровне волокна.

отношения наследства

Конструктор

Event

конструктор объекта события

1
new Event(Boolean value = false);

Параметры звонка:

  • value: логическое значение, указывает, следует ли ждать, ждать, если true, по умолчанию — false

функция-член

isSet

Определите, является ли объект события истинным

1
Boolean Event.isSet();

Результаты возврата:

  • Boolean, если событие истинно, вернуть true

set

Активируйте событие (измените статус события на true) и вызовите Pulse().

1
Event.set();

pulse

Активируйте все волокна, ожидающие этого события.

1
Event.pulse();

clear

Сбросить событие (изменить статус события на false)

1
Event.clear();

wait

дождаться события

1
Event.wait();

acquire

Получить право собственности на замок

1
Boolean Event.acquire(Boolean blocking = true);

Параметры звонка:

  • blocking: логическое значение, указывает, ждать ли, ждать, если true, по умолчанию true

Результаты возврата:

  • Boolean, возвращает информацию о том, была ли блокировка успешно получена, true указывает на успешное получение.

Метод получения используется для получения права собственности на блокировку. Когда блокировка находится в состоянии получения, этот метод немедленно возвращает значение true.

Если блокировка не может быть получена и блокировка истинна, текущее волокно переходит в режим сна. Когда другие волокна снимают блокировку, этот метод возвращает true.

Если блокировку невозможно получить и блокировка имеет значение false, метод возвращает false.


release

Освободить право собственности на замок

1
Event.release();

Этот метод освободит право собственности на блокировку или выдаст ошибку, если текущее волокно не владеет блокировкой.


count

Запрос текущего количества ожидающих задач

1
Integer Event.count();

Результаты возврата:

  • Integer, возвращает количество задач

toString

Возвращает строковое представление объекта. Обычно возвращается «[Native Object]». Объект может быть повторно реализован в соответствии с его собственными характеристиками.

1
String Event.toString();

Результаты возврата:

  • String, возвращает строковое представление объекта

toJSON

Возвращает представление объекта в формате JSON, обычно возвращая коллекцию читаемых свойств, определенных объектом.

1
Value Event.toJSON(String key = "");

Параметры звонка:

  • key: Строка, не используется.

Результаты возврата:

  • Value, возвращает значение, содержащее сериализуемый JSON