我最近写了很多关于并行计算和编程的文章,我注意到在并行计算方面有很多模式出现.注意到Microsoft已经发布了一个库以及Microsoft Visual C++ 2010社区技术预览版(名为Parallel Patterns Library),我想知道你一直在使用和遇到的常见并行编程模式有哪些值得记住?当你用C++编写并行程序时,你是否有任何习惯用法和你似乎不断弹出的模式?
模式:
生产者/消费者
一个线程产生数据
One Thread消耗数据
循环并行
如果您可以显示每个循环是独立的,则
每次迭代都可以在sperate线程中完成
重新绘制线程
其他线程可以工作并更新数据结构,但一个线程重新绘制屏幕.
主事件线程
多个线程可以生成事件
一个线程必须处理事件(因为顺序很重要)
应该尝试分离事件线程/重新绘制线程
这(帮助)防止UI冻结
但如果不仔细完成可能会导致过度重新绘制.
工作组
一组线程等待que上的作业.
线程从队列中提取一个工作项(如果没有,则等待).
线程在一个工作项上工作,直到完成
一旦完成的线程返回队列.