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입니다.

잠금 해제

잠금을 잠근 사용자, 판독기 또는 작성기에 따라 판독기-작성기 잠금을 해제합니다.

void unlock();

설명

잠금을 기다리는 기록기가 있는 경우 잠금 해제는 항상 FIFO 순서로 다음 작성기로 이동합니다. 이 잠금은 기록기에 편향되어 있으며 작가의 지속적인 부하로 독자를 굶어 굶어 버리게 할 수 있습니다.

참고 항목

concurrency 네임스페이스
critical_section 클래스