NET多线程同步方法详解(二):互斥锁(lock) 收藏
来源:互联网 发布:微赞源码下载 编辑:程序博客网 时间:2024/05/29 11:19
lock关键字是实现线程同步的比较简单的方式,其实就是设置一个临界区。在lock之后的{...}区块为一个临界区,当进入临界区时加互斥锁,离开临界区时释放互斥锁。MSDN对lock关键字的描述是: lock 关键字可将语句块标记为临界区,方法是获取给定对象的互斥锁,执行语句,然后释放该锁。
具体例子如下:
static public void ThreadFunc(object name)
{
string str = name as string;
Random rand = new Random();
int count = rand.Next(100, 200);
for (int i = 0; i < count; i++)
{
lock (NumList)
{
NumList.Add(i);
Console.WriteLine("{0} {1}", str, i);
}
}
}
{
string str = name as string;
Random rand = new Random();
int count = rand.Next(100, 200);
for (int i = 0; i < count; i++)
{
lock (NumList)
{
NumList.Add(i);
Console.WriteLine("{0} {1}", str, i);
}
}
}
对lock的使用有几点建议:对实例锁定lock(this),对静态变量锁定lock(typeof(val))。lock的对象访问权限最好是private,否则会出现失去访问控制现象。
- NET多线程同步方法详解(二):互斥锁(lock) 收藏
- .NET多线程同步方法详解(二):互斥锁(lock)
- NET多线程同步方法详解(二):互斥锁(lock)
- NET多线程同步方法:互斥锁(Lock)
- NET多线程同步方法详解(三):读写锁(ReadWriteLock) 收藏
- .NET多线程同步方法详解
- lock Mutex Monitor 之间的区别与详解, .net 多线程 同步异步操作,锁
- .NET多线程同步方法详解(一):自由锁(InterLocked)
- NET多线程同步方法详解(三):读写锁(ReadWriteLock)
- NET多线程同步方法详解(五):信号量(Semaphore)
- NET多线程同步方法详解(六):事件(ManualResetEvent/AutoResetEvent)
- .NET多线程同步方法详解(七):线程池(Thread Pooling)
- NET多线程同步方法详解(一):自由锁(InterLocked)
- NET多线程同步方法详解(五):信号量(Semaphore)
- NET多线程同步方法详解(六):事件(ManualResetEvent/AutoResetEvent)
- NET多线程同步方法详解(七):线程池(Thread Pooling)
- NET多线程同步方法详解(一):自由锁(InterLocked)
- NET多线程同步方法详解(三):读写锁(ReadWriteLock)
- 如何在OpenSolaris中使用五笔输入法
- DOM4J小结
- NET多线程同步方法详解(一):自由锁(InterLocked)
- 量变ing
- 对比mysql oracle db2 的部分ddl语法
- NET多线程同步方法详解(二):互斥锁(lock) 收藏
- NET多线程同步方法详解(三):读写锁(ReadWriteLock) 收藏
- 百度是怎么了
- NET多线程同步方法详解(四):系统内核对象 互斥对象(Mutex)
- about csdn
- NET多线程同步方法详解(五):信号量(Semaphore)
- NET多线程同步方法详解(六):事件(ManualResetEvent/AutoResetEvent)
- OpenXcap安装(二)
- NET多线程同步方法详解(七):线程池(Thread Pooling)