라이브러리
[PHP] SyncSemaphore::__construct - 새 SyncSemaphore 객체를 구성합니다.
SyncSemaphore::__construct
PHP의 SyncSemaphore 클래스는 동기화된 세마포어를 제공하는 클래스입니다. 세마포어는 프로세스 또는 스레드가 공유 자원에 액세스하는 것을 제어하는 데 사용되는 동기화 도구입니다.
SyncSemaphore::__construct 메서드는 세마포어를 초기화하는 메서드입니다. 이 메서드는 세마포어의 초기 값과 이름을 지정할 수 있습니다.
예제
#hostingforum.kr
php
// 세마포어를 초기화합니다.
$semaphore = new SyncSemaphore(3);
// 세마포어를 사용하는 프로세스 또는 스레드
function worker($semaphore) {
// 세마포어를 획득합니다.
if (!$semaphore->acquire()) {
echo "세마포어를 획득할 수 없습니다.
";
return;
}
// 공유 자원을 사용합니다.
echo "공유 자원을 사용합니다.
";
// 세마포어를 반납합니다.
$semaphore->release();
}
// 5개의 프로세스를 생성합니다.
$threads = [];
for ($i = 0; $i < 5; $i++) {
$threads[] = new Thread('worker', [$semaphore, $i]);
}
// 프로세스를 시작합니다.
foreach ($threads as $thread) {
$thread->start();
}
// 프로세스가 종료될 때까지 대기합니다.
foreach ($threads as $thread) {
$thread->join();
}
설명
* `$semaphore = new SyncSemaphore(3);` : 세마포어를 초기화합니다. 초기값은 3입니다. 이 세마포어는 3개의 프로세스 또는 스레드가 공유 자원에 액세스할 수 있습니다.
* `function worker($semaphore) { ... }` : 세마포어를 사용하는 프로세스 또는 스레드 함수입니다.
* `$semaphore->acquire();` : 세마포어를 획득합니다. 만약 세마포어가 이미 사용 중이라면, 이 메서드는 false를 반환합니다.
* `$semaphore->release();` : 세마포어를 반납합니다.
* `new Thread('worker', [$semaphore, $i]);` : 5개의 프로세스를 생성합니다.
* `$thread->start();` : 프로세스를 시작합니다.
* `$thread->join();` : 프로세스가 종료될 때까지 대기합니다.
참고
* PHP의 SyncSemaphore 클래스는 PHP 7.2 이상에서 사용할 수 있습니다.
* 세마포어는 공유 자원에 액세스하는 것을 제어하는 데 사용됩니다. 세마포어를 사용하면 프로세스 또는 스레드가 공유 자원에 액세스하는 것을 제어할 수 있습니다.
* 세마포어는 동기화 도구입니다. 동기화 도구는 프로세스 또는 스레드가 공유 자원에 액세스하는 것을 제어하는 데 사용됩니다.
-
- 나우호스팅 @pcs8404
-
호스팅포럼 화이팅!
댓글목록
등록된 댓글이 없습니다.