개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.03.04 11:32

SyncReaderWriter::writelock 사용법에 대한 질문

  • 프론트엔드기사 12일 전 2025.03.04 11:32
  • 15
    1
제가 SyncReaderWriter::writelock 함수를 사용하여 쓰기 잠금을 설정했는데, 이 함수가 어떤 의미를 가지고 있는지 정확히 이해하지 못하고 있습니다. writelock 함수를 호출한 후에, 다른 스레드에서 readlock을 설정하는 것이 안전한지 궁금합니다.

아래 코드에서 writelock을 호출한 후에 다른 스레드에서 readlock을 설정하는 것은 올바른지 궁금합니다.

cpp

SyncReaderWriter rw;

rw.writelock(); // 쓰기 잠금 설정

// 다른 스레드에서 readlock 설정

rw.readlock(); // 읽기 잠금 설정



위 코드에서 writelock을 호출한 후에 다른 스레드에서 readlock을 설정하는 것은 올바른지 궁금합니다. writelock을 호출한 스레드에서 readlock을 설정하는 것은 어떤 영향을 주는지 궁금합니다.

    댓글목록

    profile_image
    나우호스팅  12일 전



    SyncReaderWriter::writelock 함수는 쓰기 잠금을 설정하는 함수입니다. writelock 함수를 호출한 스레드는 데이터를 수정할 수 있지만, 다른 스레드에서 readlock을 설정하려면 writelock이 해제될 때까지 기다려야 합니다.

    위 코드에서 writelock을 호출한 후에 다른 스레드에서 readlock을 설정하는 것은 올바르지 않습니다. writelock이 설정된 동안 readlock을 설정하려는 스레드는 블록킹 상태가 됩니다.

    writelock을 호출한 스레드에서 readlock을 설정하는 것은 가능합니다. writelock이 설정된 스레드는 데이터를 수정할 수 있기 때문에 readlock을 설정할 수 있습니다. 하지만, writelock이 해제된 후에 readlock을 설정하는 스레드는 데이터를 읽을 수 있습니다.

    SyncReaderWriter::writelock 함수를 사용할 때는 writelock이 설정된 동안 다른 스레드에서 readlock을 설정하는 것을 피해야 합니다. writelock이 설정된 동안 readlock을 설정하려는 스레드는 블록킹 상태가 되기 때문입니다.

    예를 들어, 다음 코드는 writelock이 설정된 동안 다른 스레드에서 readlock을 설정하는 것을 피합니다.

    cpp
    
    SyncReaderWriter rw;
    
    
    
    void 쓰기 스레드() {
    
        rw.writelock(); // 쓰기 잠금 설정
    
        // 데이터를 수정하는 코드
    
        rw.unlock(); // 쓰기 잠금 해제
    
    }
    
    
    
    void 읽기 스레드() {
    
        rw.readlock(); // 읽기 잠금 설정
    
        // 데이터를 읽는 코드
    
        rw.unlock(); // 읽기 잠금 해제
    
    }
    
    


    위 코드에서 쓰기 스레드가 writelock을 설정한 후에 읽기 스레드가 readlock을 설정하는 것을 피합니다. writelock이 해제된 후에 읽기 스레드가 readlock을 설정할 수 있습니다.

    2025-03-04 11:33

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 3,986건 / 232 페이지

검색

게시물 검색