라이브러리
[PHP] Threaded::run - 실행
PHP에서 Threaded::run에 대한 설명
PHP는 기본적으로 싱글 스레드 프로세스로, 하나의 스레드만 실행할 수 있습니다. 하지만 PHP 7.4부터는 Threaded 클래스를 통해 멀티 스레딩을 지원합니다. Threaded::run 메소드는 스레드가 실행되는 메소드입니다.
Threaded 클래스의 사용법
Threaded 클래스를 사용하려면 먼저 Threaded 클래스를 사용할 수 있는 PHP 버전을 확인해야 합니다. PHP 7.4 이상 버전에서만 Threaded 클래스를 사용할 수 있습니다.
예제 1: Threaded::run 메소드의 기본 사용법
#hostingforum.kr
php
class MyThread extends Threaded {
public function run() {
echo "스레드가 실행됩니다.
";
sleep(2); // 2초 동안 대기
echo "스레드가 종료됩니다.
";
}
}
$thread = new MyThread();
$thread->start();
$thread->join(); // 스레드가 종료될 때까지 대기
예제 2: Threaded::run 메소드의 사용법 (스레드 간의 통신)
#hostingforum.kr
php
class MyThread extends Threaded {
private $sharedVariable;
public function __construct($sharedVariable) {
$this->sharedVariable = $sharedVariable;
}
public function run() {
$this->sharedVariable++;
echo "스레드가 실행됩니다.
";
sleep(2); // 2초 동안 대기
echo "스레드가 종료됩니다.
";
echo "스레드가 공유 변수에 접근했습니다.
";
echo "공유 변수의 값: " . $this->sharedVariable . "
";
}
}
$sharedVariable = 0;
$thread = new MyThread($sharedVariable);
$thread->start();
$thread->join(); // 스레드가 종료될 때까지 대기
echo "메인 스레드가 공유 변수에 접근했습니다.
";
echo "공유 변수의 값: " . $sharedVariable . "
";
예제 3: Threaded::run 메소드의 사용법 (스레드 간의 통신 - 동기화)
#hostingforum.kr
php
class MyThread extends Threaded {
private $sharedVariable;
private $mutex;
public function __construct($sharedVariable) {
$this->sharedVariable = $sharedVariable;
$this->mutex = new Mutex();
}
public function run() {
$this->mutex->lock();
$this->sharedVariable++;
$this->mutex->unlock();
echo "스레드가 실행됩니다.
";
sleep(2); // 2초 동안 대기
echo "스레드가 종료됩니다.
";
echo "스레드가 공유 변수에 접근했습니다.
";
echo "공유 변수의 값: " . $this->sharedVariable . "
";
}
}
$sharedVariable = 0;
$mutex = new Mutex();
$thread = new MyThread($sharedVariable);
$thread->start();
$thread->join(); // 스레드가 종료될 때까지 대기
echo "메인 스레드가 공유 변수에 접근했습니다.
";
echo "공유 변수의 값: " . $sharedVariable . "
";
Mutex 클래스
Mutex 클래스는 스레드 간의 동기화를 위해 사용됩니다.
#hostingforum.kr
php
class Mutex {
private $mutex;
public function __construct() {
$this->mutex = sem_open("/mutex", O_CREAT, 0644, 1);
}
public function lock() {
sem_acquire($this->mutex);
}
public function unlock() {
sem_release($this->mutex);
}
}
결론
PHP에서 Threaded::run 메소드는 스레드가 실행되는 메소드입니다. 스레드 간의 통신을 위해 Mutex 클래스를 사용할 수 있습니다. 스레드 간의 동기화를 위해 Mutex 클래스를 사용할 수 있습니다.
-
- 나우호스팅 @pcs8404
-
호스팅포럼 화이팅!
댓글목록
등록된 댓글이 없습니다.