라이브러리

[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 클래스를 사용할 수 있습니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

  • 전체 10,077건 / 152 페이지

검색

게시물 검색