객체조건
조건변수 객체
조건 변수는 파이버 간에 공유되는 전역 변수를 사용하여 동기화하는 메커니즘으로 주로 두 가지 작업으로 구성됩니다: 1) 한 스레드는 특정 조건이 true가 될 때까지 기다렸다가 자신을 일시 중지합니다. 2) 다른 스레드는 조건을 true로 만들고 대기를 알립니다. 아래쪽으로 실행하는 섬유.
경합을 방지하려면 각 조건 변수에Lock협력 (Lock직접 명시적으로 생성하여 전달할 수도 있고, fibjs가 자동으로 생성하도록 할 수도 있습니다.
조건 변수를 사용하면 하나의 조건 변수를 사용하여 광섬유 배치의 전환을 제어할 수 있습니다.
다음은 파이버 스케줄링의 두 가지 예입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21var coroutine = require("coroutine");
var cond = new coroutine.Condition();
var ready = false;
var state = "ready";
function funcwait() {
cond.acquire();
while (!ready)
cond.wait();
state = "go"
cond.release();
}
coroutine.start(funcwait);
cond.acquire();
console.log(state)
ready = true;
cond.notify();
coroutine.sleep();
console.log(state);
다음을 출력합니다:
1
2ready
go
상속관계
건설자
Condition
조건 변수 생성자(조건 변수에 필요한 잠금은 fibjs에 의해 내부적으로 생성됨)
1new Condition();
조건 변수 생성자
1new Condition(Lock lock);
호출 매개변수:
- lock:Lock, 자체 구성 잠금 사용
멤버 함수
wait
조건 변수를 기다립니다
1Boolean Condition.wait(Integer timeout = -1);
호출 매개변수:
- timeout: 정수, 시간 초과를 밀리초 단위로 지정합니다. 기본값은 -1이며, 이는 시간 초과가 발생하지 않음을 의미합니다.
결과 반환:
- Boolean, 획득이 성공하면 true를 반환하고, 시간이 초과되면 false를 반환합니다.
notify
아래쪽으로 실행을 계속하려면 차단된 파이버(파이버 풀에 마지막으로 추가된 파이버)에게 알립니다.
1Condition.notify();
notifyAll
아래쪽으로 실행을 계속하려면 차단된 모든 파이버에 알림
1Condition.notifyAll();
acquire
잠금 소유권 가져오기
1Boolean Condition.acquire(Boolean blocking = true);
호출 매개변수:
- blocking: 부울, 기다릴지 여부를 지정합니다. true인 경우 대기합니다. 기본값은 true입니다.
결과 반환:
- Boolean, 잠금이 성공적으로 획득되었는지 여부를 반환합니다. true는 획득에 성공했음을 나타냅니다.
획득 메소드는 잠금의 소유권을 획득하는데 사용되며, 잠금이 획득 가능한 상태일 때 이 메소드는 즉시 true를 반환합니다.
잠금을 획득할 수 없고 차단이 true인 경우 현재 Fiber는 절전 모드로 전환되고, 다른 Fiber가 잠금을 해제하면 이 메서드는 true를 반환합니다.
잠금을 획득할 수 없고 차단이 false인 경우 메서드는 false를 반환합니다.
release
잠금 소유권 해제
1Condition.release();
이 방법은 잠금 소유권을 해제하거나 현재 파이버가 잠금을 소유하지 않은 경우 오류를 발생시킵니다.
count
현재 대기 중인 작업 수 쿼리
1Integer Condition.count();
결과 반환:
- Integer, 작업 수를 반환합니다.
toString
객체의 문자열 표현을 반환하며 일반적으로 "[Native Object]"를 반환하며 객체 자체의 특성에 따라 다시 구현될 수 있습니다.
1String Condition.toString();
결과 반환:
- String, 객체의 문자열 표현을 반환합니다.
toJSON
객체의 JSON 형식 표현을 반환하며 일반적으로 객체에 의해 정의된 읽을 수 있는 속성 컬렉션을 반환합니다.
1Value Condition.toJSON(String key = "");
호출 매개변수:
- key: 문자열, 사용되지 않음
결과 반환:
- Value, 직렬화 가능한 JSON을 포함하는 값을 반환합니다.