看到一段代码利用openmp并行执行for循环,觉得这玩意真方便,一行代码就完事了,就上网学习。
大致看完之后得出个结论,这玩意也就只能for循环用用。个人粗浅的认识,接受一切反驳。
理由如下:
- 上手有门槛,初级功能简单方便,想用好高级功能还是挺麻烦的。
- 跨平台、多编译器支持:不是决定性优势,跨平台的线程库也不少。
- 多线程很多情况下是启动不同的处理函数,这种场景用std::thread/pthread也麻烦不到哪去,同步什么的控制起来更熟悉。
总之:学习成本(特别是团队)与收益不成正比。
但是,如果有大量for循环,还是可以考虑一下,使用起来确实方便,代码也简洁。
附几个链接,个人感觉讲的比较清晰。
参考:
https://blog.youkuaiyun.com/ArrowYL/article/details/81094837
https://blog.youkuaiyun.com/donhao/category_692208.html
https://www.ibm.com/developerworks/cn/aix/library/au-aix-openmp-framework/index.html
https://www.openmp.org/specifications/