基本上,如果我这样做......
class Bla
T Run(Func<T> myFun)
return myFun()
void SomeMethod()
Run( () => whatever() )
然后myFun总是相同的对象,或者每次都是一个新对象?或者以略微不同的方式制定......如果我对它进行锁定,是否会阻止并行执行?
答案 0 :(得分:2)
此:
() => whatever()
每次都创建一个新的委托对象。
这意味着如果两个线程同时调用SomeMethod
,那么每个线程都将构造自己的委托并将锁定放在Run
内并不能确保只有一个线程可以运行该委托传递到Run
。