并行编程和C++

Dea*_*ael 8 c++ parallel-processing design-patterns idioms

我最近写了很多关于并行计算和编程的文章,我注意到在并行计算方面有很多模式出现.注意到Microsoft已经发布了一个库以及Microsoft Visual C++ 2010社区技术预览版(名为Parallel Patterns Library),我想知道你一直在使用和遇到的常见并行编程模式有哪些值得记住?当你用C++编写并行程序时,你是否有任何习惯用法和你似乎不断弹出的模式?

Mar*_*ork 17

模式:

  • 生产者/消费者

    • 一个线程产生数据
    • One Thread消耗数据
  • 循环并行

    • 如果您可以显示每个循环是独立的,则
      每次迭代都可以在sperate线程中完成
  • 重新绘制线程

    • 其他线程可以工作并更新数据结构,但一个线程重新绘制屏幕.
  • 主事件线程

    • 多个线程可以生成事件
    • 一个线程必须处理事件(因为顺序很重要)
    • 应该尝试分离事件线程/重新绘制线程
      这(帮助)防止UI冻结
      但如果不仔细完成可能会导致过度重新绘制.
  • 工作组

    • 一组线程等待que上的作业.
    • 线程从队列中提取一个工作项(如果没有,则等待).
      线程在一个工作项上工作,直到完成
      一旦完成的线程返回队列.