简约语言:golang; CSP式的并发模型

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

用python开发也有几年了,很喜欢它的简洁。最近在看golang,感觉和python很像,语法简洁,标准类型相识,标准库也是一样的丰富。引用一段文字(http://blog.csdn.net/myan/article/details/2028545):
所谓”魔幻语言“,主要代表作品有C++、Perl、Javascript和Ruby。这些语言拥有丰富的特性,聪明的技 巧和意想不到的奇效,永远有发掘不完的奇技淫巧,总能找到让人匪夷所思的”yet another way"。反过来,“简约语言”崇尚清晰直接,够用就行,要求从代码容易理解,宁可笨一点、累一点、多写一点代码,反对出人意料的技巧,反对故弄玄虚。 C、PHP、Python和Lua这一派语言的代表作。

看来golang也是“简约语言”
之前一直使用python的微线程(协程,纤程)开发模式,对gevent和stackless都有一定的了解。由于python有GIL,实际开发中很少用到thread,这时对stackless中的channel使用有些不理解。为什么多个微线程中需要用channel来通讯呢?微线程本身并非实际并发执行,完全可以用共享内存的方式来通讯。所以在之前使用python开发项目时,为了利用多核,项目的架构一般是:微线程+多进程模式。微线程使用共享内存的开发方式,的确比较简单方便。
最近在学习golang时,看到很多golang资料中提到CSP(“通过通信来共享内存,而非通过共享内存来通信”的原则)。最初不甚理解,看了这篇资料(http://concur.rspace.googlecode.com/hg/talk/concur.html)后顿悟。文章中用简单明了的图演示了CSP和普通的共享内存方式实现的并发模型,golang中的goroutine是能在多个真实线程下执行的,从而达到了真正利用多核的目的。虽然开始对CSP有些感觉,不过如果要在实际项目中使用还会有很多细节需要考虑。


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

本文来自:开源中国博客

感谢作者:seewind

查看原文:简约语言:golang; CSP式的并发模型

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

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