라이브러리
[PHP] Thread::join - 동기화
PHP에서 Thread::join 사용하기
PHP는 멀티스레딩을 지원하는 언어 중 하나입니다. PHP 7.4부터는 `Thread` 클래스가 추가되어 멀티스레딩을 쉽게 처리할 수 있습니다. 이 클래스의 `join` 메서드는 스레드가 종료될 때까지 대기하는 메서드입니다.
스레드 만들기
스레드를 만들기 위해서는 `Thread` 클래스를 상속받는 클래스를 만들고 `run` 메서드를 오버라이딩해야 합니다. `run` 메서드는 스레드가 실행되는 메서드입니다.
#hostingforum.kr
php
class MyThread extends Thread {
public function run() {
echo "스레드가 실행 중입니다.
";
sleep(2); // 2초 대기
echo "스레드가 종료되었습니다.
";
}
}
스레드 실행 및 join
스레드를 실행하고 종료를 기다리기 위해서는 `start` 메서드를 호출하고 `join` 메서드를 호출합니다.
#hostingforum.kr
php
$thread = new MyThread();
$thread->start();
// 스레드가 종료될 때까지 대기
$thread->join();
echo "스레드가 종료되었습니다.
";
스레드 여러 개 만들기
스레드를 여러 개 만들고 종료를 기다리기 위해서는 스레드 객체를 배열에 저장하고 `join` 메서드를 호출할 수 있습니다.
#hostingforum.kr
php
$threads = [];
for ($i = 0; $i < 5; $i++) {
$thread = new MyThread();
$thread->start();
$threads[] = $thread;
}
foreach ($threads as $thread) {
$thread->join();
}
echo "모든 스레드가 종료되었습니다.
";
예외 처리
스레드가 예외를 발생시키면 `join` 메서드는 예외를 캐치하고 스레드가 종료될 때까지 대기합니다. 예외를 캐치하고 싶지 않다면 `join` 메서드를 호출하기 전에 `isAlive` 메서드를 호출하여 스레드가 살아 있는지 확인할 수 있습니다.
#hostingforum.kr
php
$thread = new MyThread();
$thread->start();
if (!$thread->isAlive()) {
echo "스레드가 이미 종료되었습니다.
";
} else {
try {
$thread->join();
} catch (Exception $e) {
echo "스레드가 예외를 발생시켰습니다.
";
}
}
결론
PHP에서 `Thread::join` 메서드는 스레드가 종료될 때까지 대기하는 메서드입니다. 스레드를 만들고 실행하는 방법, 스레드 여러 개 만들기, 예외 처리 방법을 알아보았습니다. 멀티스레딩을 사용하여 프로그램의 성능을 향상시키고, 병렬 처리를 쉽게 처리할 수 있습니다.
-
- 나우호스팅 @pcs8404
-
호스팅포럼 화이팅!
댓글목록
등록된 댓글이 없습니다.