객체 내장 객체

개체 조건

조건 변수 개체

조건 변수는 광섬유 간에 공유되는 전역 변수를 사용하여 동기화하는 메커니즘으로 주로 1) 스레드가 특정 조건이 설정될 때까지 기다렸다가 자신을 일시 중단하고 2) 다른 스레드가 조건을 설정하도록 하고 알림의 두 가지 동작을 포함합니다. 아래쪽으로 실행하기 위해 대기 중인 광섬유.

경쟁을 방지하기 위해 각 조건 변수에는Lock성냥 (Lock명시적으로 생성 및 전달하거나 fibjs에서 생성할 수 있음)

조건 변수를 사용하여 하나의 조건 변수를 사용하여 섬유 배치의 스위치를 제어할 수 있습니다.

다음은 광섬유 스케줄링의 두 가지 예입니다.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
var 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 2
ready go

계승

#lineWidth: 1.5 #font: Helvetica,sans-Serif #fontSize: 10 #leading: 1.6 #.this: fill=lightgray #.class: fill=white [<class>object|toString();toJSON()] [<class>Lock|new Lock()|acquire();release();count()] [<this>Condition|new Condition()|wait();notify();notifyAll()] [object] <:- [Lock] [Lock] <:- [Condition] Lock new Lock() acquire() release() count() Condition new Condition() wait() notify() notifyAll() object toString() toJSON()

건설자

Condition

조건 변수 생성자(조건 변수에 필요한 잠금은 fibjs에 의해 내부적으로 생성됨)

1
new Condition();

조건 변수 생성자

1
new Condition(Lock lock);

호출 매개변수:

  • lock: Lock, 자체 제작한 자물쇠 사용

멤버 함수

wait

섬유를 차단 상태로 두십시오.

1
Condition.wait();

notify

차단된 파이버(파이버 풀에 마지막으로 추가된 파이버)에 알림을 보내 아래쪽으로 실행을 계속합니다.

1
Condition.notify();

notifyAll

아래쪽으로 계속 실행되도록 차단된 모든 광섬유에 알립니다.

1
Condition.notifyAll();

acquire

잠금 소유권 획득

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

호출 매개변수:

  • blocking: Boolean, 대기 여부 지정, 참이면 기다림, 기본값은 참

반환 결과:

  • Boolean, 잠금이 성공적으로 획득되었는지 여부를 반환합니다. true는 획득이 성공했음을 의미합니다.

획득 메소드는 잠금의 소유권을 획득하는 데 사용되며 잠금이 획득 가능한 상태일 때 이 메소드는 즉시 true를 리턴합니다.

잠금을 사용할 수 없고 차단이 true이면 현재 광섬유가 절전 모드로 전환되고 다른 광섬유가 잠금을 해제하면 이 메서드가 true를 반환합니다.

잠금을 사용할 수 없고 차단이 false이면 메서드는 false를 반환합니다.


release

잠금 소유권 해제

1
Condition.release();

이 메서드는 잠금의 소유권을 해제합니다.현재 광섬유가 잠금을 소유하지 않으면 이 메서드는 오류를 발생시킵니다.


count

현재 대기 중인 작업 수 쿼리

1
Integer Condition.count();

반환 결과:

  • Integer, 작업 수를 반환합니다.

toString

개체의 문자열 표현을 반환하고 일반적으로 "[네이티브 개체]"를 반환하며 개체는 고유한 특성에 따라 다시 구현할 수 있습니다.

1
String Condition.toString();

반환 결과:

  • String, 객체의 문자열 표현을 반환합니다.

toJSON

객체의 JSON 형식 표현을 반환하고 일반적으로 객체에 의해 정의된 읽을 수 있는 속성 모음을 반환합니다.

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

호출 매개변수:

  • key: 문자열, 미사용

반환 결과:

  • Value, 직렬화 가능한 JSON을 포함하는 값을 반환합니다.