ОбъектСобытие
Модуль 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
19const 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
конструктор объекта события
1new Event(Boolean value = false);
Параметры звонка:
- value: логическое значение, указывает, следует ли ждать, ждать, если true, по умолчанию — false
функция-член
isSet
Определите, является ли объект события истинным
1Boolean Event.isSet();
Результаты возврата:
- Boolean, если событие истинно, вернуть true
set
Активируйте событие (измените статус события на true) и вызовите Pulse().
1Event.set();
pulse
Активируйте все волокна, ожидающие этого события.
1Event.pulse();
clear
Сбросить событие (изменить статус события на false)
1Event.clear();
wait
дождаться события
1Event.wait();
acquire
Получить право собственности на замок
1Boolean Event.acquire(Boolean blocking = true);
Параметры звонка:
- blocking: логическое значение, указывает, ждать ли, ждать, если true, по умолчанию true
Результаты возврата:
- Boolean, возвращает информацию о том, была ли блокировка успешно получена, true указывает на успешное получение.
Метод получения используется для получения права собственности на блокировку. Когда блокировка находится в состоянии получения, этот метод немедленно возвращает значение true.
Если блокировка не может быть получена и блокировка истинна, текущее волокно переходит в режим сна. Когда другие волокна снимают блокировку, этот метод возвращает true.
Если блокировку невозможно получить и блокировка имеет значение false, метод возвращает false.
release
Освободить право собственности на замок
1Event.release();
Этот метод освободит право собственности на блокировку или выдаст ошибку, если текущее волокно не владеет блокировкой.
count
Запрос текущего количества ожидающих задач
1Integer Event.count();
Результаты возврата:
- Integer, возвращает количество задач
toString
Возвращает строковое представление объекта. Обычно возвращается «[Native Object]». Объект может быть повторно реализован в соответствии с его собственными характеристиками.
1String Event.toString();
Результаты возврата:
- String, возвращает строковое представление объекта
toJSON
Возвращает представление объекта в формате JSON, обычно возвращая коллекцию читаемых свойств, определенных объектом.
1Value Event.toJSON(String key = "");
Параметры звонка:
- key: Строка, не используется.
Результаты возврата:
- Value, возвращает значение, содержащее сериализуемый JSON