zoukankan      html  css  js  c++  java
  • 异步操作与锁

    互斥锁(lock)

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

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

    读写锁(ReadWriteLock)

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

    //使用一个 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();
                    }
  • 相关阅读:
    WPF之元素绑定
    BC9050的IP地址设置
    C#之进程、线程
    EPLAN学习笔记01
    Beckhoff模拟量模块的使用
    倍福-基于EL2521的NC轴控制
    kali之ARP欺骗获取图片流
    PHP脚本实现凯撒加(解)密
    SQL注入(一)普通型注入
    linux卸载不完全
  • 原文地址:https://www.cnblogs.com/demoC/p/5427863.html
Copyright © 2011-2022 走看看