객체 내장 객체

객체 세마포어

섬유 세마포 개체

세마포어 개체는 내부 카운터를 관리합니다.이 카운터는 수집 또는 대기를 호출 한 후 하나씩 감소하고 릴리스 또는 게시를 호출 한 후에 하나씩 증가합니다. 다른 파이버가 릴리스 또는 포스트를 통해 카운터 값을 증가시킬 때까지 값이 0 일 때 획득 및 대기가 현재 파이버를 휴면 상태로 유지하므로 카운터는 음수로 감소하지 않습니다.

세마포어의 일반적인 경우는 자원의 동시 사용과 생산자 / 소비자 모델의 적용을 제한하는 것입니다.

데이터베이스 요청을 예로 들어 자원의 동시 사용을 제한하십시오.

1 2 3 4 5 6 7 8 9 10
var maxconnections = 5; var l = new coroutine.Semaphore(maxconnections); ...... l.acquire(); var conn = connectdb() ..... conn.close(); l.release();

생산자 / 소비자 모델은 일반적으로 대기열과 함께 세마포어를 사용합니다. 생산자는 큐에 데이터를 추가하고 신호를 게시하고 소비자는 먼저 신호를 기다린 다음 신호를 얻은 다음 큐를 쿼리하여 데이터를 검색합니다.

상속

생성자

Semaphore

세마포 생성자

1
new Semaphore(Integer value = 1);

통화 매개 변수 :

  • value : 정수, 카운터의 초기 값

회원 기능

wait

획득과 동등한 세마포어 대기 중 (true)

1
Semaphore.wait();

post

release ()와 동등한 세마포어를 해제하십시오.

1
Semaphore.post();

trywait

신호를 얻을 수 없으면 신호를 얻으려고 시도한 다음 즉시 리턴하고 false를 리턴하십시오. 이는 획득 (false)과 같습니다.

1
Boolean Semaphore.trywait();

결과를 반환합니다 :

  • Boolean , 성공하면 true

acquire

자물쇠를 소유하십시오

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

통화 매개 변수 :

  • blocking : 부울, 대기 여부 지정, true 인 경우 대기, 기본값은 true

결과를 반환합니다 :

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

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

잠금을 사용할 수없고 차단이 true 인 경우 현재 광섬유는 휴면 상태가되며 다른 광섬유가 잠금을 해제하면 true를 반환합니다.

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


release

잠금 소유권 해제

1
Semaphore.release();

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


count

현재 대기중인 작업 수 쿼리

1
Integer Semaphore.count();

결과를 반환합니다 :

  • Integer , 작업 수를 반환

toString

일반적으로 "[Native Object]"라는 객체의 문자열 표현을 반환합니다.

1
String Semaphore.toString();

결과를 반환합니다 :

  • String , 객체의 문자열 표현을 반환

toJSON

객체의 JSON 표현을 반환하며 일반적으로 객체에 의해 정의 된 읽기 가능한 속성 모음을 반환합니다.

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

통화 매개 변수 :

  • key : 문자열, 미사용

결과를 반환합니다 :

  • Value 는 JSON 직렬화 가능을 포함하는 값을 리턴합니다.