메모리를 공유하기 위해 보통 Lock을 많이 쓴다.
- 공용 API로 c++11부터 std::mutex를 지원한다. mutex m; m.lock(); m.unlock() 으로 사용할 수 있다.
- mutex는 mutual exclusive로 lock 범위에 있는 코드는 한 쓰레드만 실행하도록 잠근다.
- recursive mutex를 이용해 같은 mutex로 lock을 잡고 해제할 수 있다.
- RAII패턴을 이용한 lock_guard가 있다. 범위를 벗어나면 자동으로 lock을 unlock한다.
- std::unique_lock도 lock_guard와 비슷하다. 몇 가지 다양한 옵션이 더 있다. unique_lock 만들기만 하고 실제 lock은 나중에 잡는 인터페이스등이 있다.
- lock을 잡는 범위는 상황에 따라 잘 판단한다.
댓글 영역