저는 C++에서 Producer-consumer problem을 연구하고 있는데 OpenMP를 사용할 때 모니터를 구현하는 방법은 무엇입니까?OpenMP를 사용하여 C++로 모니터를 구현하는 방법은 무엇입니까?
OpenMP에서 conditional_variable과 같은 항목을 찾을 수 없어 위키 피 디아 예제와 같은 특정 조건에 대해 대기/알림을 구현할 수 없습니다.
저는 C++에서 Producer-consumer problem을 연구하고 있는데 OpenMP를 사용할 때 모니터를 구현하는 방법은 무엇입니까?OpenMP를 사용하여 C++로 모니터를 구현하는 방법은 무엇입니까?
OpenMP에서 conditional_variable과 같은 항목을 찾을 수 없어 위키 피 디아 예제와 같은 특정 조건에 대해 대기/알림을 구현할 수 없습니다.
OpenMP가 조건 변수를 사용할 수있는 방법을 제공하지 않는다고해서 특정 용도에 맞지 않는다고 생각합니다.
OpenMP는 조건부 변수에 대한 구조를 제공하지 않습니다. 그 목적은 다중 스레드 과학 응용 프로그램에 더 적합합니다. 여기서 문제는 작은 조각으로 나누고 스레드에 대해서는 정확하게 생각하지 않습니다. 동기화가 OpenMP의 런타임 라이브러리에 의해 처리되므로
일부 구현에서는 pthread를 백엔드로 사용하기 때문에 pthread_cond
제품군 함수를 사용하여 해결할 수 있습니다. 그러나 이것은 동일한 도구의 다른 버전을 사용하는 경우에도 이식 할 수 없을 가능성이있는 스레드가 작성되고 결합되는 방식을 제어 할 수 없기 때문에 교착 상태가 발생하기 쉽습니다.
귀하의 경우에는 제작자 고객 대기열을 구현하는 데 필요한 모든 것을 이미 포함하고있는 C++ 표준 스레드 라이브러리를 사용합니다. 여전히 병렬 프로그래밍 프레임 워크를 고수하고 싶다면 이미 Intel Thread Building Blocks를 살펴보십시오.이 스레드는 이미 이런 유형의 Concurrent Queues을 구현하고 있습니다.
나는 완전히 동의하지만 "하지 마라"는 질문에 대한 대답이 아닙니다. 질문은 대답하기에 너무 크다. –
충분히 명확하지 않을 수도 있지만 제 답변은 "OpenMP에서 완전히 할 수 없으며 다른 옵션을 사용하는 것이 더 좋습니다"라고 대답했습니다. 의견을 주셔서 감사합니다. 나는 그것을 명확히하기 위해 답을 업데이트 할 것이다. –
OpenMP에서 mutex 및 조건 변수를 완벽하게 구현할 수 있다고 생각하지만 시도하지는 않습니다. –
내가 P-C에 맞지 않는 OpenMP에서 P-C 문제를 어떻게 수행하는지 더 자세히 알려주십시오. – Surt
정확히 무엇을하고 싶습니까? OpenMP 구문 만 사용하여 조건 변수를 구현할 수 있는지 알아보기위한 학습 활동입니까? STL 조건 변수가없는 고대 시스템을 사용해야합니까? STL에 대해 들어 본 적이 없었습니까? 조금 입력하십시오. –