首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >同时执行多个方法

同时执行多个方法
EN

Stack Overflow用户
提问于 2014-11-24 17:03:15
回答 1查看 2.3K关注 0票数 0

我有几种方法是相互独立的,我很好奇哪种方法是同时执行它们的最佳方法。我尝试了下面的这些方法,并对每一种方法进行计时,时间似乎是完全相同的,所以我不确定我是否做错了什么.?

此外,这是一个web应用程序,在用户单击按钮后调用这些方法。C#、aspx

代码语言:javascript
运行
复制
method1(var1, var2, var3);  // takes 5 seconds to run
method2(var1, var2, var3);  // takes about 1-2 seconds to run

初审:

代码语言:javascript
运行
复制
//Entered my methods one right after another
method1(var1, var2, var3);
method2(var1, var2, var3);
//timed the execution and overall took ~5-6 seconds to run and display results

第二次审判:

代码语言:javascript
运行
复制
//used Google and found something called Parallel
Parallel.Invoke(() =>
{
   method1(var1, var2, var3);
},
() =>
{
   method2(var1, var2, var3);
});
//~5-6 seconds to run and display results

第三次审判:

代码语言:javascript
运行
复制
//used Google and found something called Tasks
Task task1 = Task.Factory.StartNew(() => method1(var1, var2, var3));
Task task2 = Task.Factory.StartNew(() => method2(var1, var2, var3));
Task.WaitAll(task1, task2);
//~5-6 seconds to run and display results

第四次审判(类似于第三次审判):

代码语言:javascript
运行
复制
//used Google and found something called Tasks
Task[] tasks = new Task[2]
{
   Task.Factory.StartNew(() => method1(var1, var2, var3)),
   Task.Factory.StartNew(() => method2(var1, var2, var3))
};
Task.WaitAll(tasks);
//~5-6 seconds to run and display results

任何建议或帮助都是非常感谢的。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-24 17:14:51

你的第三次和第四次测试也是一样的。你的第二个测试在功能上相当于另外两个测试。

您的方法应该并行运行(即使存在无保证 )。

但是,您似乎没有以任何有意义的精确性来计时这些测试。尝试从这些方法中打印消息,在开始和结束时,我相信您将在method2完成之前看到method1开始。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27110129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档