一文帶你了解.Net讀寫鎖

  • 2021 年 9 月 17 日
  • 筆記

本文主要讲解.Net基于ReaderWriterLockSlim讲解读写锁 基础概念 读写锁是一个具有特殊用途的线程锁,适用于频繁读取且读取需要一定时间的场景,共享资源的读取操作通常是可以同时执行的, 普通的互斥锁不管是获取还是修改操作无法同时执行,如果多个线程为了读取操作而获取互斥锁,那么同一时间 …

Continue Reading

RWLock——一種細粒度的Mutex互斥鎖

  • 2021 年 7 月 17 日
  • 筆記

RWMutex —— 细粒度的读写锁 我们之前有讲过 Mutex 互斥锁 。这是在任何时刻下只允许一个 goroutine 执行的串行化的锁。而现在这个 RWMutex 就是在 Mutex 的基础上进行了拓展能支持多个 goroutine 持有读锁,而在尝试持有写锁时就会如 Mutex 一样就会陷入 …

Continue Reading

一文帶你了解.Net訊號量

本文主要讲解.Net基于Semaphore带大家了解信号量 信号量举例 大家去银行去银行取钱,互斥锁管理的时一个柜台是否正在处理业务,而信号量管理的是整个柜台是否正在处理业务,每当有一个柜台处理完成之后,A大堂经理则进行叫号喊下一位进行处理业务,B大堂经理则对进来的客户进行接待,当柜台全部都在办理业 …

Continue Reading

一文帶你了解.Net混合鎖和lock語句

  • 2021 年 6 月 22 日
  • 筆記

本文主要讲解.Net基于Monitor.Enter和lock实现互斥锁 Monitor.Enter实现 相比前面的锁来说,混合锁的性能更高,任何引用类型的对象都可以做为锁对象,不需要事先创建指定类型的实例,并且设计的非托管的资源由.Net运行时自动释放,不需要手动调用释放函数,获取和释放混合锁需要使 …

Continue Reading

一文帶你了解.Net互斥鎖

  • 2021 年 6 月 16 日
  • 筆記

本文主要讲解.Net基于Threading.Mutex实现互斥锁 基础互斥锁实现 基础概念:和自旋锁一样,操作系统提供的互斥锁内部有一个数值表示锁是否已经被获取,不同的是当获取锁失败的时候,它不会反复进行重试,而且让线程进入等待状态,并把线程对象添加到锁关联的队列中,另一个线程释放锁时会检查队列中是 …

Continue Reading

一文帶你了解.Net自旋鎖

  • 2021 年 6 月 16 日
  • 筆記

本文主要讲解.Net基于Thread实现自旋锁的三种方式 基于Thread.SpinWait实现自旋锁 实现原理:基于Test--And--Set原子操作实现 使用一个数据表示当前锁是否已经被获取 0表示未被索取,1表示已经获取 获取锁时会将_lock的值设置为1 然后检查修改前的值是否等于0, 优 …

Continue Reading

並發條件隊列之Condition 精講

  • 2021 年 1 月 27 日
  • 筆記

1. 条件队列的意义 Condition将Object监控器方法( wait , notify和notifyAll )分解为不同的对象,从而通过与任意Lock实现结合使用,从而使每个对象具有多个等待集。 Lock替换了synchronized方法和语句的使用,而Condition替换了Object监 …

Continue Reading

面試官:你說說ReentrantLock和Synchronized區別

  • 2021 年 1 月 26 日
  • 筆記

大家好!又和大家见面了。为了避免 面试 尴尬,今天同比较通俗语言和大家聊下ReentrantLock和Synchronized区别! 使用方式 Synchronized可以修饰实例方法,静态方法,代码块。 自动释放锁。 ReentrantLock一般需要try catch finally语句,在tr …

Continue Reading