Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.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++ C++;使用OpenMP#pragma和std:thread?_C++_Multithreading_Openmp - Fatal编程技术网

C++ C++;使用OpenMP#pragma和std:thread?

C++ C++;使用OpenMP#pragma和std:thread?,c++,multithreading,openmp,C++,Multithreading,Openmp,OpenMP的tasks和parallel for loops对于特定进程中的并发处理似乎是一个不错的选择,但我不确定它是否涵盖了所有用例 如果我只是想产生一个不需要返回任何东西的异步任务,我不想等待它,我只想让它在后台运行,然后在完成后结束。。。OpenMP有这种能力吗?如果不能,我可以安全地使用std:thread,同时也可以使用OpenMP pragmas进行其他操作吗 如果生成的线程本身使用OpenMP任务组,而父线程也使用另一个OpenMP任务组来执行其他任务,该怎么办?这会导致问题吗

OpenMP的tasks和parallel for loops对于特定进程中的并发处理似乎是一个不错的选择,但我不确定它是否涵盖了所有用例

如果我只是想产生一个不需要返回任何东西的异步任务,我不想等待它,我只想让它在后台运行,然后在完成后结束。。。OpenMP有这种能力吗?如果不能,我可以安全地使用std:thread,同时也可以使用OpenMP pragmas进行其他操作吗


如果生成的线程本身使用OpenMP任务组,而父线程也使用另一个OpenMP任务组来执行其他任务,该怎么办?这会导致问题吗?

不要这样做,这会导致线程过度订阅,并且在不同平台上的行为会有所不同。似乎您已经超过了OpenMP,需要自己执行线程,例如使用TBB。从理论上也可以看出,通过OpenMP几乎可以做任何事情,但可能需要深入研究。如果你想深入了解C++中的这种东西,你应该使用C++编写的东西。我自己也没有用过TBB,但据我所知,它可能是这里最好的候选人。