• 2023-12-01go读写锁
    go读写锁互斥锁每次只让一g通过,去读写数据。但是读数据操作,并发其实没有问题。所以诞生了读写锁。读协程可以并发,一起读。但是写协程还是要走互斥锁,只能一个个通过。先加了读锁先加了读锁。那么写的协程,就需要去休眠队列中等待。一直到读锁都释放。先加了写锁这个时候,
  • 2023-05-05从源码深入理解读写锁(golang-RWMutex)
    环境:go1.19.8在读多写少的情况下,即使一段时间内没有写操作,大量并发的读访问也不得不在Mutex的保护下变成串行访问,这种情况下,使用Mutex,对性能影响比较大。所以就要区分读写操作。如果某个读操作的g持有了锁,其他读操作的g就不必等待了,可以并发的访问共享变量,这样就可以将串行的
  • 2023-01-21go RWMutex源码分析
    适用场景并发场景下读多写少。字段含义RWMutex基于Mutex,写优先,Lock函数(反转readerCount)会阻止新的reader获取锁。typeRWMutexstruct{  wMutex  // writer
  • 2023-01-01GO 同步原语
    Mutex饥饿模式的判定:等待时间超过1mswoken标志的作用:通知unlock有人在自旋,这样unlock时,我们不会去唤醒队列中阻塞的G保证公平性,也就是当我们还剩最后一个在