개체 내장 개체

개체 세마포

섬유 세마포어 객체

세마포어 객체는 획득 또는 대기 호출 후 1 씩 감소하고 릴리스 또는 게시 호출 후 1 씩 증가하는 내부 카운터를 관리합니다. 카운터는 음수로 감소하지 않을 것입니다. 왜냐하면 획득 및 대기는 값이 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();

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

계승

#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>Semaphore|new Semaphore()|wait();post();trywait()] [object] <:- [Lock] [Lock] <:- [Semaphore] Lock new Lock() acquire() release() count() Semaphore new Semaphore() wait() post() trywait() object toString() toJSON()

건설자

Semaphore

세마포 생성자

1
new Semaphore(Integer value = 1);

호출 매개 변수 :

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

회원 기능

wait

acquire (true)에 해당하는 세마포를 기다리는 중

1
Semaphore.wait();

post

release ()와 동일한 세마포어를 해제합니다.

1
Semaphore.post();

trywait

신호 획득을 시도합니다. 획득 할 수없는 경우 즉시 반환하고 acquire (false)와 동일한 false를 반환합니다.

1
Boolean Semaphore.trywait();

반환 결과 :

  • Boolean, 획득에 성공하면 true를 반환합니다.

acquire

잠금 소유권 획득

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

호출 매개 변수 :

  • blocking: Boolean, 대기 여부를 지정합니다. 참이면 대기, 기본값은 참입니다.

반환 결과 :

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

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

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

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


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이 포함 된 값을 반환합니다.