模拟
一个方法调用并发的最终目标是我不在乎哪个方法调用首先到达它。。。方法本身是同步的(目前),因此我知道并接受它将被阻塞,我根本不在乎哪个请求首先使它到达那里。。
这更像是一个思维练习,所以如果我做了这样的事情,它是在做我认为它在做的事情吗?i、 在不同的线程上运行方法调用?
Task<MyObject> t1 = Task.Run(() => MethodToRun("param1"));
Task<MyObject> t2 = Task.Run(() => MethodToRun("param2"));
await Task.WhenAll(t1, t2); // block, and wait for results, i think?
var r1 = t1.Result;
var r2 = t2.Result;
或者,这会一直执行下去吗
t1
先不管?
var taskList = new List<Task<MyObject>>
{
new Task<MyObject>(() => MethodToRun("param1"));
new Task<MyObject>(() => MethodToRun("param2"));
};
Parallel.ForEach(taskList, t => t.Start());
await Task.WhenAll(taskList);
var r1 = taskList[0].Result;
var r2 = taskList[1].Result;
这有什么不同吗?