Go并发编程

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

我想纠正一下 golang 中这(又)一个广为流传的误解:“Channel 优于锁机制” 或者 "Channel 取代锁机制"。对于很多情况下,我们既可以使用锁机制,也可以使用 Channel 来实现同一个目标,然而实际针对某个特定问题时,可能使用 Channel 会更加方便,但另外一些问题,使用锁机制会更加方便。Go wiki 上给出了一个回答:

Use whichever is most expressive and/or most simple.

Channel 和锁机制在 golang 中不是替代和被替代的关系。如果你试图用一种方式解决所有问题,那么必定会遇到让你抓狂的情况。最后附上一句话:

Share memory by communicating, don't communicate by sharing memory.

##锁的使用

1、互斥锁

互斥锁是传统并发程序对共享资源进行访问控制的主要手段。它由标准库代码包sync中的Mutex结构体类型代表。sync.Mutex类型只有两个公开的方法——Lock和Unlock。

2、读写锁


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

本文来自:简书

感谢作者:下一块巧克力_14b6

查看原文:Go并发编程

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

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