现在的位置: 首页 > 综合 > 正文

.NET Framework体贴之处点滴 – Thread Synchronization – Method level

2012年04月03日 ⁄ 综合 ⁄ 共 658字 ⁄ 字号 评论关闭

说的是Framework如何体贴程序员,而非C#。

 

这是Framework对Concurrency相关下的细微功夫:  

   using System.Runtime.CompilerServices;


public class MyClass
{
[MethodImpl(MethodImplOptions.Synchronized)] //体贴不?
public void DoSomething( )
{
/* Method code */
}
//Class members
}

这段代码通过[MethodImpl(MethodImplOptions.Synchronized)]精彩地实现了方法一级的多线程同步。

 

上面的代码逻辑上等价于下面的:

    public class MyClass
{
public void DoSomething( )
{
lock(this) //请参考C#体贴之处点滴 - lock
{
/* Method code */
}
}
//Class members
}

 

 

二种套路,孰优孰劣呢? 对于机器而言,我猜想这压根就不是一个问题。如果和我一样喜欢AOP的粉丝,自然应该是觉得第一个方案更酷了。奇怪的是,我还没有在实际项目中看到过有人使用第一种套路,无一例外都是用的lock,我一直很好奇为何会是如此一边倒的结果?难道是lock看上去比[MethodImpl(MethodImplOptions.Synchronized)]更酷?

 

(按:code source from <<Programming .NET Components>> 2nd.Edition Juval Lowy)

抱歉!评论已关闭.