异步操做与锁

互斥锁(lock)并发

lock 关键字将语句块标记为临界区,方法是获取给定对象的互斥锁,执行语句,而后释放该锁。当任何一个线程获取到锁后,其余线程若是须要使用该临界区内代码,则必须等待前一个线程使用完毕后释放锁。性能

Object thisLock = new Object();
lock (thisLock)
{
    // 临界区代码块
}

读写锁(ReadWriteLock)ui

 

ReadWriteLock定义支持单个写线程和多个读线程的锁。该锁的做用主要是解决并发读的性能问题,使用该锁,能够大大提升数据并发访问的性能,只有在写时,才会阻塞全部的读锁。this

//使用一个 System.Int32 超时值获取读线程锁。
                _rwlock.AcquireReaderLock(100);
                try
                {
                    if (list.Count > 0)
                    {
                        int result = list[list.Count - 1];
                    }
                }
                finally
                {
                    //减小锁计数,释放锁
                    _rwlock.ReleaseReaderLock();
                }
//使用一个 System.Int32 超时值获取写线程锁。
                _rwlock.AcquireWriterLock(100);
                try
                {
                    list.Add(WriteCount++);
                }
                finally
                {
                    //减小写线程锁上的锁计数,释放写锁
                    _rwlock.ReleaseWriterLock();
                }
相关文章
相关标签/搜索