라이브러리

[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 이상에서 사용할 수 있습니다.
* 세마포어는 공유 자원에 액세스하는 것을 제어하는 데 사용됩니다. 세마포어를 사용하면 프로세스 또는 스레드가 공유 자원에 액세스하는 것을 제어할 수 있습니다.
* 세마포어는 동기화 도구입니다. 동기화 도구는 프로세스 또는 스레드가 공유 자원에 액세스하는 것을 제어하는 데 사용됩니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

  • 전체 8,985건 / 89 페이지

검색

게시물 검색