Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C++;使用OpenMP? 我正在使用C++,在使用OpenMP?< /P>时,实现监视器的方法是什么?_C++_Multithreading_Openmp_Producer Consumer - Fatal编程技术网

如何在C++;使用OpenMP? 我正在使用C++,在使用OpenMP?< /P>时,实现监视器的方法是什么?

如何在C++;使用OpenMP? 我正在使用C++,在使用OpenMP?< /P>时,实现监视器的方法是什么?,c++,multithreading,openmp,producer-consumer,C++,Multithreading,Openmp,Producer Consumer,我在OpenMP中找不到类似的东西,也无法在某些条件下实现等待/通知,如在wikipedia示例中。我认为OpenMP没有提供任何使用条件变量的方法,因此并不真正适合您的特定用途 OpenMP不为条件变量提供任何构造。它的用途更适合于多线程的科学应用程序,在这些应用程序中,您只需将问题划分为小块,而不考虑线程,因为同步由OpenMP的运行时库负责 有些实现使用pthread作为后端,因此可以绕过并使用pthread\u cond系列函数。但是,这很容易出现死锁(因为您无法控制线程的创建和连接方式

我在OpenMP中找不到类似的东西,也无法在某些条件下实现等待/通知,如在wikipedia示例中。

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

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

有些实现使用pthread作为后端,因此可以绕过并使用
pthread\u cond
系列函数。但是,这很容易出现死锁(因为您无法控制线程的创建和连接方式),即使使用同一工具的不同版本,也可能无法移植


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

请详细介绍如何在OpenMP中解决p-C问题,我认为这不适合p-C?您到底想做什么?这是一个学习练习,看看您是否可以仅使用openMP构造实现条件变量?(这很重要)您必须使用一个缺少STL条件变量的古老系统吗?你从没听说过STL吗?键入一点。我完全同意,但“不要那样做”不是问题的答案。这个问题太大了,无法在这里回答。我可能不够清楚,但我的回答更像是:“在OpenMP中不能完全做到这一点,最好使用其他选项”。谢谢你的反馈。我将更新答案以澄清这一点。我认为我可以在openMP中完全实现互斥和条件变量,但我不打算尝试。这正是我的观点。你需要实现它,而不是提供给你的东西。OpenMP并不意味着用户可以在此基础上进行操作。我已经使用OpenMP和类似的共享内存编程模型工作了几年。这不是不可能的,但根本不值得尝试。