2017-10-20 154 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中完全实现互斥锁和条件变量,但我不打算尝试它。 –