glib는 아니 세마포어/잠금/등. 스레드 간 통신을 허용 GAsyncQueue
라는 데이터 구조를 갖고, 심지어 생산자/소비자 솔루션을 구현하는 작업을 단순하게. 두 개의 다른 스레드가 데이터를 GAsyncQueue
구조로 푸시하는 경우 push
함수는 내부적으로 큐에 대한 상호 배타적 인 액세스를 구현합니다. 더 awesomely, 스레드가 pop
함수를 호출하고 거기에 데이터가 없으면 일부 데이터가 다른 스레드에 의해 큐에 푸시 될 때까지 호출 스레드가 차단됩니다. 이 모든 작업은 개발자에게 투명하게 스레드에 안전한 방식으로 수행됩니다. 나는 그것을 좋아하지만큼 glib의 GAsyncQueue는 C++과 동일합니까?
GAsyncQueue
과 동일한 기능을 제공하는 C++ 라이브러리가 더 많이 있습니까?
'std :: queue','std :: mutex' 및'std :: condition_variable'을 사용하여 작성하는 것이 꽤 쉽습니다. –
@JonathanWakely 확실 합니다만, 쉽 겠지만 나는 차라리 잘 테스트 된 (아마도 최적화 된) 메시지 큐 구현을 처음부터 직접 구현하는 것보다 훨씬 효율적으로 사용할 것이다. –