初学多线程(二)--Monitor VS lock

来源:互联网 发布:蓝格软件 编辑:程序博客网 时间:2024/04/27 23:45

**1.Both Monitor class and lock provider a mechanism that synchronizes access to objects.lock is the shortcut for Monitor.Enter with try and finally.
即lock是Monitor.Enter()的简写**

private static object obj = new object();        static void AddToMillion()        {            for (int i = 0; i < 1000000; i++)            {                lock(obj)                {                    total++;                }            }        }       

可以写成:

private static object obj = new object();        static void AddToMillion()        {            for (int i = 0; i < 1000000; i++)            {                Monitor.Enter(obj);                try                {                    total++;                }                finally                {                    Monitor .Exit (obj );                }            }        }

2.lock是简写方法,如果要实现高级进程,就要使用Montor类中的其他方法,如:TryEnter(),Wait(),Pulse()&PulseAll()等
注意Montor.Enter在C#4.0中的写法有点不一样

static object obj = new object();        static void AddToMillion()        {            for (int i = 0; i < 1000000; i++)            {                bool lockToken = false;                 Monitor.Enter(obj, ref lockToken);                try                {                    total++;                }                finally                {                    if(lockToken)                    Monitor .Exit (obj );                }            }        }
0 0
原创粉丝点击