라이브러리

[PHP] SyncReaderWriter::readunlock - 읽기 잠금을 해제합니다.




SyncReaderWriter::readunlock 개요


PHP의 SyncReaderWriter 클래스는 동기화된 읽기/쓰기 작업을 지원하는 클래스입니다. 이 클래스는 여러 쓰레드나 프로세스에서 공유 데이터를 안전하게 읽고 쓰는 것을 허용합니다.

`readunlock` 메서드는 읽기 작업을 수행하고, 읽기 작업이 완료된 후에 락을 해제하는 메서드입니다.

SyncReaderWriter::readunlock 사용 예제


#hostingforum.kr
php

class SharedData {

    private $data;

    private $readerWriter;



    public function __construct() {

        $this->data = 0;

        $this->readerWriter = new SyncReaderWriter();

    }



    public function increment() {

        $this->readerWriter->acquireWriteLock();

        try {

            $this->data++;

        } finally {

            $this->readerWriter->releaseWriteLock();

        }

    }



    public function read() {

        $this->readerWriter->acquireReadLock();

        try {

            return $this->data;

        } finally {

            $this->readerWriter->releaseReadLock();

        }

    }

}



$sharedData = new SharedData();



// 쓰레드 1: 데이터를 읽고, 쓰레드 2: 데이터를 증가시킵니다.

$thread1 = new class($sharedData) extends Thread {

    private $sharedData;



    public function __construct($sharedData) {

        $this->sharedData = $sharedData;

    }



    public function run() {

        echo "쓰레드 1: 데이터 읽기: " . $this->sharedData->read() . "
";

    }

};



$thread2 = new class($sharedData) extends Thread {

    private $sharedData;



    public function __construct($sharedData) {

        $this->sharedData = $sharedData;

    }



    public function run() {

        $this->sharedData->increment();

    }

};



$thread1->start();

$thread2->start();



$thread1->join();

$thread2->join();



echo "최종 데이터: " . $sharedData->read() . "
";



이 예제에서, `SharedData` 클래스는 공유 데이터를 관리하는 클래스입니다. `increment` 메서드는 데이터를 증가시키는 메서드이며, `read` 메서드는 데이터를 읽는 메서드입니다.

`SyncReaderWriter` 클래스는 동기화된 읽기/쓰기 작업을 지원하는 클래스입니다. `acquireWriteLock` 메서드는 쓰기 락을 획득하는 메서드이며, `releaseWriteLock` 메서드는 쓰기 락을 해제하는 메서드입니다. `acquireReadLock` 메서드는 읽기 락을 획득하는 메서드이며, `releaseReadLock` 메서드는 읽기 락을 해제하는 메서드입니다.

`readunlock` 메서드는 읽기 작업을 수행하고, 읽기 작업이 완료된 후에 락을 해제하는 메서드입니다.

이 예제에서, 쓰레드 1은 데이터를 읽고, 쓰레드 2는 데이터를 증가시킵니다. 쓰레드 1은 읽기 락을 획득하고, 데이터를 읽은 후에 락을 해제합니다. 쓰레드 2는 쓰기 락을 획득하고, 데이터를 증가시킨 후에 락을 해제합니다.

이러한 동기화된 읽기/쓰기 작업은 공유 데이터를 안전하게 읽고 쓰는 것을 허용합니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

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

검색

게시물 검색