gpt4 book ai didi

c# - 应该使用什么方法来并行执行一项任务多次?

转载 作者:行者123 更新时间:2023-12-03 06:03:52 25 4
gpt4 key购买 nike

我有这个简单的任务

void DoWork(string job)

这应该在 Azure Worker Role 上并行执行多次。我有以下选择:

  • 对 DoWork 的多个异步调用

    while(true) {DoWorkDelegate.BeginInvoke(...);}
  • 自己分配多个线程

    while(true) {Thread t = new Thread( DoWork);
    t.Start();}
  • 线程池

就利用率而言,推荐的方法是什么?

最佳答案

这个例子可能过于简化了。在示例中,循环中的每次迭代都会启动一个新线程。虽然我完全同意 @DanielMann 使用 TPL 而不是线程,但添加

while (true) {
Task.Factory.StartNew(() => DoWork());
}

仍然会启动很多线程。确保除了启动线程之外还有测试要做的工作,例如

while (true) {
job = FetchJobFromQueue();
if( job != null ){
Task.Factory.StartNew(() => DoWork(job));
}
else {
Thread.Sleep(1000);
}
}

注意 sleep 时间,以免处理器陷入空循环。

关于一些相关的说明,请查看此 MSDN article正确处理退出条件的 while(true) 循环。

关于c# - 应该使用什么方法来并行执行一项任务多次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18358019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com