加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c中的循环螺纹

发布时间:2020-12-16 09:32:10 所属栏目:百科 来源:网络整理
导读:我试图找出基本上为for循环线程的最佳方法.例如,如果我有以下循环: for(int i = 0; i n; i++) doSomethingThreadSafe(i); 这将在Windows平台上.我已经为每个处理器创建了一个线程,然后尝试尽可能均匀地为每个处理器划分n.然后我将必要的数据传递给每个线程,
我试图找出基本上为for循环线程的最佳方法.例如,如果我有以下循环:

for(int i = 0; i < n; i++)
  doSomethingThreadSafe(i);

这将在Windows平台上.我已经为每个处理器创建了一个线程,然后尝试尽可能均匀地为每个处理器划分n.然后我将必要的数据传递给每个线程,然后使用WaitForMultipleThreads.有一个更好的方法吗?我不想使用像boost这样的任何其他库.

理想情况下,我想要一些通用的(也许是模板化的)方法.即

threaded_for(0,n,doSomethingThreadSafe);

如果最好/最有效的方法是使用库,那么添加库需要多少工作,以及在这个例子中它将如何使用.不过,我更喜欢一种不需要添加其他东西的解决方案.

解决方法

最简单的方法是openMP – visual studio支持它作为标准,你只需在循环中添加几个魔术#pragma并使用你拥有的所有内核!

最好的学习方法是如何不去做 – 32 OpenMP Traps For C++ Developers

另一种方法 – 但稍微复杂一些方法Intel TBB

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读