다음을 수행 할 계획입니다.생산자/소비자 패턴에 대한 STL 컨테이너 스레드 안전성
소비 될 사전 빌드 된 객체의 큐를 저장합니다. 주 스레드는이 오브젝트들을 여기 저기에 소비 할 수 있습니다. 로깅에 사용되는 또 다른 쓸데없는 스레드가 있으며 시간이 많이 걸리지 않지만 값 비싼 것들은 아닙니다. 미리 만들어진 객체가 부족할 때, 나는 그들을 쓸데없는 스레드로 채워 넣을 것입니다.
이제 제 질문은 경쟁 조건이 될 것입니까? 기술적으로 한 스레드가 앞쪽에서 객체를 사용하고 있고 다른 스레드가 객체를 뒤에서 밀어 넣고 있습니다. 크기를 0으로 줄이지 않는 한 괜찮습니다. 걱정되는 유일한 점은이 양면 큐의 "크기"입니다. STL 컨테이너에 정수 "크기"변수를 저장합니까? 그 크기 변수를 수정하면 경쟁 조건이 생겨날까요?
이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 주 스레드가 성능에 치명적이기 때문에 잠금을 사용하고 싶지 않습니다. (처음에이 개체들을 사전 구축 한 이유입니다!)
-1 스위치가 발생할 때 소비자 스레드가 대기열에서 읽는 중일 때는 어떻게 될까요? 이를 방지하기 위해서는 전체 읽기를 보호해야합니다. 전체 아이디어를 거의 무시합니다. 전환하는 동안 글쓰기 중일 수도있는 제작자 용 Ditto. –
@BrankoDimitrijevic, 그렇기 때문에 독서 대기열이 비어있을 때까지 기다린 후 *** 스위치를 차단하십시오. 생산자 쓰레드가 성능에 치명적이지 않다면 (OP와 유사), 각 쓰레드를 차단할 수 있습니다. 스위치는 소비자에 의해 구동됩니다. – Brady
이제 알겠습니다.downvote에 대한 미안 해요 - 당신은 내가 그것을 되돌릴 수 있도록 답변을 편집 할 수 있습니까? –