라이브러리

[PHP] SyncReaderWriter::writelock - 배타적 쓰기 잠금을 기다립니다.




SyncReaderWriter::writeLock


`SyncReaderWriter`는 PHP 8.1에서 추가된 클래스로, 읽기-쓰기 동시성 제어를 위한 클래스입니다. 이 클래스는 읽기와 쓰기의 동시성을 제어하기 위한 `writeLock()` 메소드를 제공합니다.

# writeLock() 메소드


`writeLock()` 메소드는 쓰기 잠금을 획득하는 메소드입니다. 이 메소드는 쓰기 잠금이 이미 획득된 경우 `LockException` 예외를 발생시키며, 읽기 잠금이 획득된 경우 읽기 잠금을 자동으로 해제하고 쓰기 잠금을 획득합니다.

# 예제


#hostingforum.kr
php

use SwooleCoroutineSyncReaderWriter;



$syncReaderWriter = new SyncReaderWriter();



// 쓰기 잠금을 획득합니다.

$syncReaderWriter->writeLock();



try {

    // 쓰기 잠금이 획득된 경우에만 실행됩니다.

    echo "쓰기 잠금이 획득되었습니다.
";

} finally {

    // 쓰기 잠금을 해제합니다.

    $syncReaderWriter->unlock();

}



// 읽기 잠금을 획득합니다.

$syncReaderWriter->readLock();



try {

    // 읽기 잠금이 획득된 경우에만 실행됩니다.

    echo "읽기 잠금이 획득되었습니다.
";

} finally {

    // 읽기 잠금을 해제합니다.

    $syncReaderWriter->unlock();

}



# 동시성 제어 예제


#hostingforum.kr
php

use SwooleCoroutineSyncReaderWriter;



$syncReaderWriter = new SyncReaderWriter();



// 쓰기 잠금을 획득합니다.

$syncReaderWriter->writeLock();



try {

    // 쓰기 잠금이 획득된 경우에만 실행됩니다.

    echo "쓰기 잠금이 획득되었습니다.
";

    

    // 쓰기 잠금이 유지된 상태에서 읽기 잠금을 획득합니다.

    $syncReaderWriter->readLock();

    

    try {

        // 읽기 잠금이 획득된 경우에만 실행됩니다.

        echo "읽기 잠금이 획득되었습니다.
";

    } finally {

        // 읽기 잠금을 해제합니다.

        $syncReaderWriter->unlock();

    }

} finally {

    // 쓰기 잠금을 해제합니다.

    $syncReaderWriter->unlock();

}



위 예제에서는 쓰기 잠금이 획득된 후 읽기 잠금을 획득하는 경우를 보여줍니다. 읽기 잠금이 획득된 후 쓰기 잠금을 획득하는 경우는 동시성 제어가 발생하지 않습니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

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

검색

게시물 검색