首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

并行计算怎么动态添加任务

2012-04-23 
并行计算如何动态添加任务?初学.net并行计算不久,请教大家一些问题。看了一些微软的并行例子,发现都是对已

并行计算如何动态添加任务?
初学.net并行计算不久,请教大家一些问题。

看了一些微软的并行例子,发现都是对已知的Task进行并行。
例如

C# code
Parallel.Invoke(Task1,Task2..)


那么如果我写了一个Task,是动态的数量。
比如Task里调用一个方法或者函数 是需要传入参数的,我通过一个For循环动态的获取需要传入的参数并放入函数执行。这样的情况,怎么样才能并行地执行呢?


另外,
C# code
for (int i = 0; i < path.Length; i++)                {                  Parallel.Invoke(() => begintask(path[i]));                }




C# code
Parallel.For(0, path.Length, (i) => begintask(path[i]));


这两者有什么区别? Parallel.Invoke是否是全局的对可以并行的任务都并行?



[解决办法]
http://blog.csdn.net/xuzhongxuan/article/details/6288105
看看里面有没有需要的
[解决办法]
1.我通过一个For循环动态的获取需要传入的参数并放入函数执行。
-------------------
用队列Queue<T>,加入参数用Enqueue,并行计算提取参数用Dequeue


2.都可能并行
[解决办法]
lock(queue)

if(queue.Count>0)
Parallel.Invoke(() => begintask(queue.Dequeue()));
}
------------------
你再其他地方,比如新线程中
lock(queue)
{
queue.Enqueue(pathstr)
}
---------------
Queue<string> queue=new Queue<string>();

热点排行