"锁" 在线程同步的时候是非常重要的, 如果是文件锁能够防止误写, 当然锁的用法也比较简单, 操作前 加锁, 操作完成 解锁, 当有其他线程操作的时候, 需要等待, 直到其他线程解锁, 方能继续操作.
var lock *sync.Mutex
lock = new(sync.Mutex)
lock.Lock()
... ... // 处理操作的逻辑
lock.Unlock()
如果在解锁之前再次进行加锁,会进入死锁状态
如果是文件锁, 会分为读锁 RLock()
, 写锁 WLock()
以及 读写锁 RWLock()
var lock *sync.RWMutex
lock = new(sync.RWMutex)
lock.RLock()
... ... // 处理文件操作的逻辑
lock.RUnlock()
有疑问加站长微信联系(非本文作者)