개체 내장 개체

개체 조건

조건 변수 개체

조건 변수는 광섬유간에 공유되는 전역 변수를 사용하여 동기화하는 메커니즘입니다. 주로 두 가지 동작이 포함됩니다. 아래로 실행하기 위해 대기하는 광섬유.

경쟁을 방지하기 위해 각 조건 변수에는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는 획득이 성공했음을 의미합니다.

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

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

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


release

잠금 소유권 해제

1
Condition.release();

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


count

현재 대기중인 작업 수 쿼리

1
Integer Condition.count();

반환 결과 :

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

toString

객체의 문자열 표현을 반환합니다. 일반적으로 "[Native Object]"를 반환합니다. 객체는 자체 특성에 따라 다시 구현 될 수 있습니다.

1
String Condition.toString();

반환 결과 :

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

toJSON

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

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

호출 매개 변수 :

  • key: 문자열, 미사용

반환 결과 :

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