라이브러리
[PHP] Threaded::notifyOne - 동기화
PHP Threaded::notifyOne
PHP는 멀티스레딩을 지원하는 언어 중 하나입니다. PHP 7.4부터는 Threaded 클래스가 추가되어 스레드 기반의 프로그래밍을 지원합니다. Threaded::notifyOne 메소드는 notify 메소드와 유사하지만, notify 메소드는 모든 대기중인 스레드를 깨우지만, notifyOne 메소드는 대기중인 스레드 중 하나만 깨웁니다.
Threaded::notifyOne 사용 예제
아래 예제는 Threaded::notifyOne 메소드를 사용하는 예제입니다.
#hostingforum.kr
php
class MyThread extends Threaded {
private $flag;
public function __construct() {
$this->flag = false;
}
public function run() {
echo "스레드 시작
";
while (!$this->flag) {
echo "스레드 대기 중...
";
$this->wait();
}
echo "스레드 종료
";
}
public function notifyOne() {
$this->flag = true;
$this->notifyOne(); // notifyOne 메소드를 호출하여 대기중인 스레드 중 하나를 깨움
}
}
$thread = new MyThread();
$thread->start();
// 1초 후 notifyOne 메소드를 호출하여 대기중인 스레드 중 하나를 깨움
sleep(1);
$thread->notifyOne();
// 스레드가 종료되면 종료 메시지를 출력합니다.
$thread->join();
echo "스레드 종료
";
Threaded::notifyOne 메소드의 동작
위 예제에서, 스레드는 대기중인 상태에서 notifyOne 메소드를 호출하여 대기중인 스레드 중 하나를 깨웁니다. notifyOne 메소드는 대기중인 스레드 중 하나를 깨우기 때문에, notify 메소드와는 다르게 모든 대기중인 스레드를 깨우지 않습니다.
Threaded::notifyOne 메소드의 장점
Threaded::notifyOne 메소드는 대기중인 스레드 중 하나만 깨우기 때문에, notify 메소드보다 성능이 좋습니다. notify 메소드는 모든 대기중인 스레드를 깨우기 때문에, notifyOne 메소드보다 더 많은 시스템 리소스를 사용합니다.
Threaded::notifyOne 메소드의 단점
Threaded::notifyOne 메소드는 대기중인 스레드 중 하나만 깨우기 때문에, notify 메소드보다 안전성이 떨어집니다. notify 메소드는 모든 대기중인 스레드를 깨우기 때문에, notifyOne 메소드보다 더 많은 스레드가 동시에 실행될 수 있습니다.
결론
Threaded::notifyOne 메소드는 대기중인 스레드 중 하나만 깨우기 때문에, notify 메소드보다 성능이 좋습니다. 그러나 notify 메소드보다 안전성이 떨어집니다. 따라서, notifyOne 메소드를 사용할 때는 주의하여 사용해야 합니다.
-
- 나우호스팅 @pcs8404
-
호스팅포럼 화이팅!
댓글목록
등록된 댓글이 없습니다.