==== Mutex为互斥锁,顾名思义,被Mutex锁住的代码同时只允许一个协程访问,其它协程进来就要排队
如何使用?看代码:
输出:
释义:
并发1000个协程同时更改m的元素,这样会有一部分更改成功,但是还有一部分会出现竟态,造成并发错误,输出结果很明了
如何避免:
放开26行,30行便可
作用是锁住临界区28行,这样就能保证28行同时只有一个协程访问,其他协程进来得排队,等待上一个协程释放资源,即解锁。
==== RWMutex为读写锁
允许多个读者访问共享资源,但是只能有一个写者。不能同时既有读者又有写者。读者的个数和cpu核心数相关,用户与Mutex相同