reader_writer_lock 클래스
로컬 전용 회전을 사용한 작성기 우선 큐 기반 읽기/쓰기 잠금입니다. 잠금은 작성기에 대해 FIFO(선입 선출) 액세스 권한을 부여하며 작성기의 연속 부하 상태에서는 판독기에 제공되지 않습니다.
구문
class reader_writer_lock;
멤버
public 클래스
속성 | 설명 |
---|---|
reader_writer_lock::scoped_lock 클래스 | 잠금 개체를 작성자로 획득 reader_writer_lock 하는 데 사용할 수 있는 예외 안전 RAII 래퍼입니다. |
reader_writer_lock::scoped_lock_read 클래스 | 잠금 개체를 판독기로 획득 reader_writer_lock 하는 데 사용할 수 있는 예외 안전 RAII 래퍼입니다. |
공용 생성자
속성 | 설명 |
---|---|
reader_writer_lock | 새 reader_writer_lock 개체를 생성합니다. |
~reader_writer_lock 소멸자 | 개체를 reader_writer_lock 삭제합니다. |
공용 메서드
이름 | 설명 |
---|---|
lock | 판독기-작성기 잠금을 작성자로 획득합니다. |
lock_read | 판독기-작성기 잠금을 판독기로 획득합니다. 기록기가 있는 경우 활성 판독기는 완료될 때까지 기다려야 합니다. 판독기는 잠금에 대한 관심을 등록하고 기록기가 잠금을 해제할 때까지 기다립니다. |
try_lock | 차단 없이 판독기-작성기 잠금을 작성자로 획득하려고 시도합니다. |
try_lock_read | 차단 없이 판독기-기록기 잠금을 판독기로 획득하려고 시도합니다. |
unlock | 잠금을 잠근 사용자, 판독기 또는 작성기에 따라 판독기-작성기 잠금을 해제합니다. |
설명
자세한 내용은 동기화 데이터 구조를 참조 하세요.
상속 계층 구조
reader_writer_lock
요구 사항
헤더: concrt.h
네임스페이스: 동시성
lock
판독기-작성기 잠금을 작성자로 획득합니다.
void lock();
설명
scoped_lock 구문을 활용하여 개체를 기록기로 획득하고 해제 reader_writer_lock
하는 것이 안전한 경우가 많습니다.
작성기가 잠금을 가져오려고 시도하면 이후 판독기는 작성기가 잠금을 성공적으로 가져와 해제할 때까지 차단됩니다. 이 잠금은 기록기에 편향되어 있으며 작가의 지속적인 부하로 독자를 굶어 굶어 버리게 할 수 있습니다.
기록기는 잠금을 종료하는 작성기가 다음 작성기를 줄에서 해제할 수 있도록 연결됩니다.
호출 컨텍스트 에서 잠금을 이미 보유하고 있으면 improper_lock 예외가 throw됩니다.
lock_read
판독기-작성기 잠금을 판독기로 획득합니다. 기록기가 있는 경우 활성 판독기는 완료될 때까지 기다려야 합니다. 판독기는 잠금에 대한 관심을 등록하고 기록기가 잠금을 해제할 때까지 기다립니다.
void lock_read();
설명
scoped_lock_read 구문을 활용하여 개체를 판독기로 획득하고 해제 reader_writer_lock
하는 것이 안전한 경우가 많습니다.
잠금을 기다리는 기록기가 있는 경우 판독기는 줄에 있는 모든 작성자가 잠금을 획득하고 해제할 때까지 기다립니다. 이 잠금은 기록기에 편향되어 있으며 작가의 지속적인 부하로 독자를 굶어 굶어 버리게 할 수 있습니다.
reader_writer_lock
새 reader_writer_lock
개체를 생성합니다.
reader_writer_lock();
~reader_writer_lock
개체를 reader_writer_lock
삭제합니다.
~reader_writer_lock();
설명
소멸자가 실행될 때 잠금이 더 이상 유지되지 않을 것으로 예상됩니다. 판독기 기록기 잠금을 잠금이 유지된 상태로 소멸하도록 허용하면 정의되지 않은 동작이 발생합니다.
reader_writer_lock::scoped_lock 클래스
잠금 개체를 작성자로 획득 reader_writer_lock
하는 데 사용할 수 있는 예외 안전 RAII 래퍼입니다.
class scoped_lock;
scoped_lock::scoped_lock
개체를 scoped_lock
생성하고 매개 변수에 reader_writer_lock
_Reader_writer_lock
기록기로 전달된 개체를 가져옵니다. 잠금이 다른 스레드에 의해 유지되면 이 호출이 차단됩니다.
explicit _CRTIMP scoped_lock(reader_writer_lock& _Reader_writer_lock);
매개 변수
_Reader_writer_lock
reader_writer_lock
작성자로 획득할 개체입니다.
scoped_lock::~scoped_lock
개체를 reader_writer_lock
삭제하고 해당 생성자에 제공된 잠금을 해제합니다.
~scoped_lock();
reader_writer_lock::scoped_lock_read 클래스
잠금 개체를 판독기로 획득 reader_writer_lock
하는 데 사용할 수 있는 예외 안전 RAII 래퍼입니다.
class scoped_lock_read;
scoped_lock_read::scoped_lock_read
개체를 scoped_lock_read
생성하고 매개 변수에 reader_writer_lock
전달된 개체를 _Reader_writer_lock
판독기로 가져옵니다. 다른 스레드가 기록기로 잠금을 유지하거나 보류 중인 기록기가 있는 경우 이 호출이 차단됩니다.
explicit _CRTIMP scoped_lock_read(reader_writer_lock& _Reader_writer_lock);
매개 변수
_Reader_writer_lock
reader_writer_lock
판독기로 획득할 개체입니다.
reader_writer_lock::scoped_lock_read::~scoped_lock_read 소멸자
개체를 scoped_lock_read
삭제하고 해당 생성자에 제공된 잠금을 해제합니다.
~scoped_lock_read();
try_lock
차단 없이 판독기-작성기 잠금을 작성자로 획득하려고 시도합니다.
구문
bool try_lock();
Return Value
잠금을 획득하면 값 true
이고, 그렇지 않으면 값 false
입니다.
try_lock_read
차단 없이 판독기-기록기 잠금을 판독기로 획득하려고 시도합니다.
bool try_lock_read();
Return Value
잠금을 획득하면 값 true
이고, 그렇지 않으면 값 false
입니다.
unlock
잠금을 잠근 사용자, 판독기 또는 작성기에 따라 판독기-작성기 잠금을 해제합니다.
void unlock();
설명
잠금을 기다리는 기록기가 있는 경우 잠금 해제는 항상 FIFO 순서로 다음 작성기로 이동합니다. 이 잠금은 기록기에 편향되어 있으며 작가의 지속적인 부하로 독자를 굶어 굶어 버리게 할 수 있습니다.