개체 내장 개체

개체 조건

조건 변수 개체

조건 변수는 광섬유간에 공유되는 전역 변수를 사용하여 동기화하는 메커니즘입니다. 주로 두 가지 작업이 포함됩니다. 그리고 대기 광섬유에 아래쪽으로 실행하도록 알립니다.

경쟁을 방지하기 위해 각 조건 변수는 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

계승

건설자

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 , 잠금이 성공적으로 획득되었는지 여부를 반환하고 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이 포함 된 값을 반환합니다.