강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

김성범님의 프로필 이미지
김성범

작성한 질문수

[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버

이벤트와 조건 변수

[이벤트와 조건 변수] 강의에서 unique_lock 사용 이유?

작성

·

126

0

17분 쯤 unique_lock을 사용하였는데

별도의 인자로

std::defer_lock, std::try_to_lock, std::adopt_lock

등 을 넘겨주지도 않는데 굳이 unique_lock을 사용하는 이유가 있을까요? 그냥 lock_guard를 써도 되지 않나요?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. 김성범님.

unique_lock과 lock_guard는 둘 다 RAII 스타일의 lock management를 제공하는 도구이지만, 몇 가지 차이점이 있습니다. 강의에서 unique_lock이 선택된 이유는 주로 unique_lock이 제공하는 더 많은 유연성과 기능 때문일 것입니다.

unique_lock의 장점:
1. Flexibility: unique_lock은 lock_guard와 다르게 유연한 잠금 해제 및 재설정 기능을 제공하며, 필요에 따라 수동으로 lock을 걸고 풀 수 있습니다.
2. Lock Management: 이를 통해, 특정 시점에서 lock을 걸고 해제하는 복잡한 상황을 좀 더 관리하기 쉬워집니다.
3. 조건 변수와의 호환성: 특히 조건 변수를 사용할 때, unique_lock은 더 적합하며 필수적일 수 있습니다. 조건 변수와 함께 사용할 때, wait 기능이 자동으로 lock을 해제하고, 조건이 충족되면 다시 lock을 걸어줄 수 있습니다.

한편, lock_guard는 단순한 lock/unlock 늬션을 필요로 하는 간단한 상황에 가장 적합합니다. unique_lock을 사용할 경우, 이러한 추가적인 유연성이 필요하거나, 이를 활용하는 코드 구조가 채택된 경우일 가능성이 높습니다.

이미 강의에서는 unique_lock의 사용을 제안한 만큼, 이점이 분명히 있으리라 생각합니다. 더 자세한 활용 예시나 설명이 강의 내에 포함되어 있다면 참고하시길 바랍니다.

아래 링크들이 도움이 될 수 있을 것입니다:
- unique_lock과 lock_guard 비교
- Condition Variable 과 unique_lock의 관계

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

김성범님의 프로필 이미지
김성범

작성한 질문수

질문하기