객체이벤트
이벤트 모듈은 협업 공유 데이터 작업을 위한 이벤트 개체를 제공합니다. 이는 여러 파이버(코루틴) 간의 동기화된 작업을 허용하여 협력적인 멀티태스킹을 달성합니다. 이벤트 객체에는 wait, pulse 및clear의 세 가지 메소드가 있습니다. wait 메소드는 이벤트가 트리거될 때까지 현재 광섬유를 차단하고, 펄스 메소드는 이벤트를 기다리고 있는 모든 광섬유를 깨우며, 클리어 메소드는 이벤트 플래그를 다음으로 재설정합니다. 거짓. 사용하여coroutine.Event모듈을 통해 개발자는 실행 순서와 파이버 간의 데이터 공유를 제어하여 복잡한 비즈니스 로직을 구현할 수 있습니다.
예를 들어, 두 Fiber 간에 데이터를 공유해야 하지만 실행 순서가 불확실한 경우 이벤트 객체를 통해 Fiber의 실행 순서를 제어하여 다른 Fiber가 실행되기 전에 한 Fiber가 트리거되도록 할 수 있습니다. Fiber 이벤트.
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는 , Fiber 1은 이벤트 수신을 통해 깨어나 실행을 계속합니다. 이 프로세스에서는 두 광섬유 사이에 잠금이나 기타 동기화 도구가 사용되지 않지만 광섬유 수준에서 데이터 동기화를 보장합니다.
상속관계
건설자
Event
이벤트 객체 생성자
1new Event(Boolean value = false);
호출 매개변수:
- value: 부울, 대기 여부를 지정합니다. true인 경우 대기하며 기본값은 false입니다.
멤버 함수
isSet
이벤트 객체가 참인지 확인
1Boolean Event.isSet();
결과 반환:
- Boolean, 이벤트가 true이면 true를 반환합니다.
set
이벤트를 활성화하고(이벤트 상태를 true로 변경) pulse()를 호출합니다.
1Event.set();
pulse
이 이벤트를 기다리고 있는 모든 Fiber를 활성화합니다.
1Event.pulse();
clear
이벤트 재설정(이벤트 상태를 false로 변경)
1Event.clear();
wait
이벤트를 기다리다
1Event.wait();
acquire
잠금 소유권 가져오기
1Boolean Event.acquire(Boolean blocking = true);
호출 매개변수:
- blocking: 부울, 기다릴지 여부를 지정합니다. true인 경우 대기합니다. 기본값은 true입니다.
결과 반환:
- Boolean, 잠금이 성공적으로 획득되었는지 여부를 반환합니다. true는 획득에 성공했음을 나타냅니다.
획득 메소드는 잠금의 소유권을 획득하는데 사용되며, 잠금이 획득 가능한 상태일 때 이 메소드는 즉시 true를 반환합니다.
잠금을 획득할 수 없고 차단이 true인 경우 현재 Fiber는 절전 모드로 전환되고, 다른 Fiber가 잠금을 해제하면 이 메서드는 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을 포함하는 값을 반환합니다.