라이브러리

[PHP] SwooleLock::lock_read - 읽기용 읽기-쓰기 잠금을 설정합니다.




SwooleLock::lock_read


SwooleLock::lock_read는 PHP에서 스레드 안전한 동기화 메커니즘을 제공하는 SwooleLock 클래스의 메서드입니다. 이 메서드는 읽기 잠금을 획득하여, 읽기 작업을 수행하는 동안 다른 스레드가 쓰기 작업을 수행하지 못하도록 막습니다.

사용법


SwooleLock::lock_read 메서드는 다음과 같이 사용할 수 있습니다.

#hostingforum.kr
php

use SwooleLock;



$lock = new Lock();

$lock->lock_read(function () {

    // 읽기 작업을 수행합니다.

    echo "읽기 작업을 수행중입니다.
";

});



예제


다음 예제에서는 SwooleLock::lock_read를 사용하여 읽기 작업을 수행하는 스레드와 쓰기 작업을 수행하는 스레드를 동시에 실행합니다. 읽기 작업을 수행하는 스레드는 쓰기 작업을 수행하는 스레드가 읽기 작업을 완료하기 전에 쓰기 작업을 수행할 수 있도록 막습니다.

#hostingforum.kr
php

use SwooleLock;



$lock = new Lock();



$readThread = new class($lock) extends Thread {

    private $lock;



    public function __construct($lock) {

        $this->lock = $lock;

    }



    public function run() {

        $this->lock->lock_read(function () {

            // 읽기 작업을 수행합니다.

            echo "읽기 작업을 수행중입니다.
";

            sleep(2); // 읽기 작업을 2초 동안 수행합니다.

        });

    }

};



$writeThread = new class($lock) extends Thread {

    private $lock;



    public function __construct($lock) {

        $this->lock = $lock;

    }



    public function run() {

        $this->lock->lock_write(function () {

            // 쓰기 작업을 수행합니다.

            echo "쓰기 작업을 수행중입니다.
";

        });

    }

};



$readThread->start();

$writeThread->start();



$readThread->join();

$writeThread->join();



결과


이 예제의 결과는 다음과 같습니다.

#hostingforum.kr


읽기 작업을 수행중입니다.

쓰기 작업을 수행중입니다.



읽기 작업을 수행하는 스레드는 쓰기 작업을 수행하는 스레드가 읽기 작업을 완료하기 전에 쓰기 작업을 수행할 수 있도록 막았습니다. 따라서 쓰기 작업은 읽기 작업이 완료된 후에 수행되었습니다.

참고


SwooleLock::lock_read는 읽기 잠금을 획득하여, 읽기 작업을 수행하는 동안 다른 스레드가 쓰기 작업을 수행하지 못하도록 막습니다. 이 메서드는 스레드 안전한 동기화 메커니즘을 제공하는 SwooleLock 클래스의 메서드입니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

  • 전체 8,985건 / 99 페이지

검색

게시물 검색