首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

请教lock(obj)和Application.Lock有什么区别

2012-03-11 
请问lock(obj)和Application.Lock有什么区别?C# codeint a 0lock (Application[delDatetime]){a + 1

请问lock(obj)和Application.Lock有什么区别?

C# code
                int a = 0;                lock (Application["delDatetime"])                {                    a += 1;                    Application["delDatetime"] = System.DateTime.Now;                }


C# code
                int a = 0;                Application.Lock();                a += 1;                Application["delDatetime"] = System.DateTime.Now;                Application.UnLock();

请问在以上两段代码遇到并发的时候,是不是都能锁住a += 1?

[解决办法]
看了下源码 事实 Application.Lock()的底层也是用 lock来实现的
C# code
internal virtual void AcquireWrite(){    lock (this)    {        while (this._lock != 0)        {            try            {                Monitor.Wait(this);                continue;            }            catch (ThreadInterruptedException)            {                continue;            }        }        this._lock = -1;    }} 

热点排行