각각의 동기화 기본 요소 리포팅이 완료되어 전체를 일괄 정리해 보자.
각각의 동기화 기본 요소(synchronization primitive)를 정리해 보면 다음과 같다. (각 요소의 세부 내용은 제목에 링크를 걸어 놨다.)
Condition variables (C++11)
조건 변수는 여러 스레드가 서로 통신할 수 있도록 하는 동기화 기본 요소입니다. 이를 통해 일정 수의 스레드가 다른 스레드로부터 진행될 수 있다는 알림을 기다릴 수 있습니다(시간 초과 가능). 조건 변수는 항상 뮤텍스(Mutex)와 연결됩니다.
Semaphores (c++20)
세마포어는 공유 리소스에 대한 동시 액세스를 제한하는 데 사용되는 경량 동기화 기본 요소입니다. 둘 중 하나라도 충분할 경우 세마포어는 조건 변수보다 더 효율적일 수 있습니다.
counting_semaphore (C++20) | 음수가 아닌 자원 수를 모델링하는 세마포어 |
binary_semaphore (C++20) | 두 가지 상태만 갖는 세마포어 |
Latches and Barriers(C++20)
래치(걸쇠) 및 장벽은 예상되는 수의 스레드가 도착할 때까지 원하는 수의 스레드가 차단되도록 허용하는 스레드 조정 메커니즘입니다. 래치는 재사용할 수 없지만 장벽은 반복적으로 사용할 수 있습니다.
728x90
728x90
'L C++ > Concurrency' 카테고리의 다른 글
memory order 조정 이야기 (30) | 2024.01.30 |
---|---|
[Concurrency] lock-free와 mutex사이 spin lock (2) | 2024.01.23 |
[Concurrency] ❇ std::atomic ❇의 이해 (0) | 2024.01.16 |
[Concurrency] C++20 스레드 조정 메커니즘 std::latch와 std::barrier (2) | 2024.01.09 |
[Concurrency] mutex의 lock/unlock 관리 도구 소개 (2/2) (2) | 2024.01.02 |