如何使用OpenMP在C++中实现监视器



我正在处理C++中的生产者-消费者问题,在使用OpenMP时,实现监视器的方法是什么?

我在OpenMP中找不到类似conditional_variable的东西,也无法像维基百科示例中那样在某些条件下实现等待/通知。

我不认为OpenMP提供任何使用条件变量的方法,因此并不真正适合您的特定用途。

OpenMP不为条件变量提供任何构造。它的用途更适合于多线程科学应用程序,在这些应用程序中,您只需将问题分割成小块,而不必考虑线程,因为同步由OpenMP的运行时库负责。

有些实现使用pthreads作为后端,因此可以绕过并使用pthread_cond家族函数。然而,这很容易出现死锁(因为您无法控制线程的创建和连接方式),即使使用相同工具的不同版本,也可能无法移植。

在您的情况下,我将直接使用C++标准线程库,它已经包含了实现生产者-消费者队列所需的所有内容。如果您仍然想坚持使用并行编程框架,请查看"英特尔线程构建块",因为它已经实现了此类并发队列。

最新更新