라이브러리

[PHP] Threaded::synchronized - 동기화


PHP 에서 Threaded::synchronized는 PHP 8.1 버전부터 지원하는 기능으로, 동기화 블록을 사용하여 스레드 간의 접근을 제어하는 방법입니다.

동기화 블록


동기화 블록은 스레드 간의 접근을 제어하는 방법입니다. 동기화 블록은 `Threaded::synchronized` 함수를 사용하여 생성할 수 있습니다. 동기화 블록은 스레드가 해당 블록 내에서 실행되는 동안 다른 스레드가 해당 블록에 접근할 수 없도록 합니다.

예제


다음 예제는 동기화 블록을 사용하여 스레드 간의 접근을 제어하는 방법을 보여줍니다.

#hostingforum.kr
php

class Counter {

    private $count = 0;



    public function increment() {

        Threaded::synchronized(function () {

            $this->count++;

        });

        return $this->count;

    }

}



$counter = new Counter();



$thread1 = new class($counter) extends Threaded {

    private $counter;



    public function __construct(Counter $counter) {

        $this->counter = $counter;

    }



    public function run() {

        for ($i = 0; $i < 10000; $i++) {

            $this->counter->increment();

        }

    }

};



$thread2 = new class($counter) extends Threaded {

    private $counter;



    public function __construct(Counter $counter) {

        $this->counter = $counter;

    }



    public function run() {

        for ($i = 0; $i < 10000; $i++) {

            $this->counter->increment();

        }

    }

};



$thread1->start();

$thread2->start();



$thread1->join();

$thread2->join();



echo $counter->count; // 20000



동기화 블록의 특징


* 스레드 간의 접근을 제어합니다.
* 동기화 블록 내에서 실행되는 스레드만 해당 블록에 접근할 수 있습니다.
* 동기화 블록 내에서 실행되는 스레드가 종료되면 다른 스레드가 해당 블록에 접근할 수 있습니다.

동기화 블록의 사용법


* `Threaded::synchronized` 함수를 사용하여 동기화 블록을 생성합니다.
* 동기화 블록 내에서 실행되는 스레드만 해당 블록에 접근할 수 있습니다.
* 동기화 블록 내에서 실행되는 스레드가 종료되면 다른 스레드가 해당 블록에 접근할 수 있습니다.

결론


PHP 8.1 버전부터 지원하는 `Threaded::synchronized` 함수를 사용하여 스레드 간의 접근을 제어하는 방법을 알아보았습니다. 동기화 블록을 사용하여 스레드 간의 접근을 제어할 수 있으며, 스레드 간의 접근을 제어하는 방법을 보여주는 예제도 제공했습니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

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

검색

게시물 검색