thread 사이에 동기화를 할 때 lock을 잡는 것으로 가장 많이 사용되는 것은 lock_guard다. 소멸과 동시에 unlock을 해주기 때문에 자동으로 lock을 해제할 수 있기 때문이다. 편하지만 lock_guard는 오직 생성자, 소멸자를 통해서만 lock을 다룰 수 있다. unique_lock은 lock_guard에 몇 가지 추가적인 기능이 있다. lock을 획득하는 시점을 미룰 수 있고 lock을 잡기 위해 무한 대기하지 않아도 된다. lock을 획득하는 순서를 보장해주기도 한다. unlock 함수도 호출할 수 있다. coditional_variable은 조건을 만족하지 않으면 무한 대기하지 않고 thread를 바로 block 한다. thread가 block 되면 다른 thread로 넘어가..