我正在使用C ++中的Producer-consumer problem,在使用OpenMP时实现监视器的方法是什么?
我在OpenMP中找不到类似conditional_variable的内容,我无法在维基百科示例中的某些条件下实现等待/通知。
答案 0 :(得分:-1)
我不认为OpenMP提供任何使用条件变量的方法,因此并不真正适合您的特定目的。
OpenMP不为条件变量提供任何构造。它的目的更适用于多线程科学应用程序,在这些应用程序中,您只是将问题分成小块,而您并不完全考虑线程,因为OpenMP的运行时库会同步这一点。
某些实现使用pthread作为后端,因此可以解决并使用pthread_cond
族函数。但是,这很容易出现死锁(因为你无法控制线程的创建和连接方式),即使使用相同工具的不同版本,也可能无法移植。
在您的情况下,我会直接使用C ++标准线程库,该库已包含实现生产者使用者队列所需的全部内容。如果您仍想坚持并行编程框架,请查看英特尔线程构建模块,因为它已经实现了这种Concurrent Queues。