2017-10-20 92 views
0

我正在使用C++編寫Producer-consumer problem以及在使用OpenMP時如何實現顯示器?如何使用OpenMP在C++中實現監視器?

我無法找到像OpenMP中conditional_variable任何東西,我不能執行等待/通知上像維基百科例如某些條件。

+0

告訴更多有關你要怎麼辦P-C題中的OpenMP了一下,這對我不適合P-C 2 – Surt

+0

你到底想做什麼?這是一個學習練習,看看您是否可以僅使用openMP構造實現條件變量? (這將是不平凡的。)你必須使用一個缺乏STL條件變量的古老系統嗎?你從未聽說過STL嗎?輸入一點。 –

回答

-1

我不認爲OpenMP提供任何手段使用條件變量,因此並不真正適合您的特定目的。

OpenMP的不適合條件變量提供任何構造。它的目的更適合於多線程科學應用程序,在這些應用程序中,您只需將小問題分割出來,並且您不會仔細考慮線程,因爲OpenMP的運行時庫支持同步。

一些實現使用並行線程作爲後端,因此有可能解決和使用pthread_cond家庭功能。然而,這很容易發生死鎖(因爲你無法控制如何創建和連接線程),即使使用相同工具的不同版本,該連接可能也不會移植。

在你的情況,我會用C++標準的線程庫,其中已經包含了所有你需要實現你的生產者消費者排隊直去。如果您仍想堅持使用並行編程框架,請參閱英特爾線程構建模塊,因爲它已經實現了這種類型的Concurrent Queues

+0

我完全同意,但「不這樣做」不是問題的答案。這個問題太大而無法在這裏回答。 –

+0

我可能不夠清楚,但我的回答更像是:「您無法在OpenMP中完全完成它,並且最好使用其他選項」。感謝您的反饋。我會更新答案以澄清這一點。 –

+0

我認爲我可以在openMP中完全實現互斥鎖和條件變量,但我不打算嘗試它。 –