안녕하세요,
재재입니다.

이번 포스팅에서는,
c++ conditional variable 이란 무엇인지 다룹니다.

아직 mutex 가 익숙하지 않으신 분들은,
이전 포스팅을 참고해주세요.

(1) c++ conditional variable 이란?

c++ conditional variable 은,
atomic type 변수나 mutex 변수와 같이 멀티 스레딩 환경에서 사용됩니다.

특히 conditional variable 은 특정 조건이 만족되기 전까지,
기다리다가, 조건이 만족되면 해당 스레드를 깨우는 데 사용합니다.

https://en.cppreference.com/w/cpp/thread/condition_variable

(2) conditional variable 과 lock

mutable mutex 와 함께, 사용하던 lock 의 방식은 lock guard 였습니다.

일반적으로 conditional variable 은 lock 변수와 함께 사용되며,
lock 을 통해 조건이 만족되기전까지 대기하는 방식을 사용합니다.

특히 lock 은 모든 연산을 수행한 다음 자동으로 해제되지만,
수동적으로도 해제를 할 수 있습니다.

(3) std::unique_lock 과 RAII 원칙

RAII는 풀어서 쓰면 Resource Acquisition Is Initialization 입니다.

RAII 원칙이란, 자원 획득은 초기화와 밀접하게 관련되어 있다는,
programming 의 원칙 중 하나입니다.

RAII 원칙은 리소스에 대한 관리를 간단하고,
안전하게 할 수 있도록 도와주는 패턴입니다.

RAII 원칙의 다른 예제에는, c++ smart pointer 인,
std::unique_ptr, std::shared_ptr 을 사용 하는 방식도 있습니다.

std::unique_lock 은 RAII 원칙을 따릅니다.

(4) 결론

conditional variable 은 멀티 스레딩 환경에서 주로 사용하며,
특히 스레드간 동기화를 도와주는 똑똑한 방식의 변수입니다.

conditional variable 을 통해 동기화를,
좀 더 우아하고 간편하게 사용해보시면 어떨까요?

다음 포스팅에서는,
지금까지 다룬 mutex, atomic type, conditional variable 모두 활용한,
예제 코드를 다루어볼게요.

c++ conditional variable 이란?
태그:                 

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다