객체 내장 객체

객체 세마포어

섬유 세마포어 개체

세마포어 객체는 내부 카운터를 관리하는데, 취득 또는 대기를 호출한 후에는 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

획득(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: Boolean, 대기 여부 지정, 참이면 기다림, 기본값은 참

반환 결과:

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

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

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

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


release

잠금 소유권 해제

1
Semaphore.release();

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


count

현재 대기 중인 작업 수 쿼리

1
Integer Semaphore.count();

반환 결과:

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

toString

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

1
String Semaphore.toString();

반환 결과:

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

toJSON

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

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

호출 매개변수:

  • key: 문자열, 미사용

반환 결과:

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