GO 锁

yin32167 · · 1938 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

"锁" 在线程同步的时候是非常重要的, 如果是文件锁能够防止误写, 当然锁的用法也比较简单, 操作前 加锁, 操作完成 解锁, 当有其他线程操作的时候, 需要等待, 直到其他线程解锁, 方能继续操作.

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()

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:yin32167

查看原文:GO 锁

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1938 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传