go语言通信理解
创始人
2025-06-01 13:12:53
0

相信大家都在官网看到这样一段话,“不要通过共享内存来通信,要通过通信开共享内存”。

要理解这段话,首先要复习进程间通信和线程间通信的方式:

Linux进程间通信:管道(匿名管道和有名管道)、信号、消息队列、共享内存、信号量、套接字(socket)

Linus线程间通信:互斥量、信号量、条件变量

Windows进程间通信:管道、共享内存、消息队列、信号量、套接字(socket)

Windows线程间通信:临界区、互斥量、事件

go语言比较特别,它的线程(协程)支持管道(pipe),为啥这么说呢?

因为管道在系统上,是进程间通信方式。如果这里不明白,把前面介绍Linux进程通信,Linux线程通信,Windows进程通信,Windows线程通信的再多看几遍。

共享内存在Windows和Linux中是用来做进程间通信的,很明显go不支持,因为go用的是线程。

但是go语言的线程支持管道(channel,在系统中是用来做进程间通信的),而管道的好处就是天然的支持阻塞,而共享内存(共享变量)需要反复加锁,解锁,等待。

再啰嗦一点,go语言实现了自己的调度器,在用户态多线程调度,当一个线程阻塞时,它会把资源分给没阻塞的线程。这点和多线程模型有很大的区别,以nodejs为例,它有一个主线程和一堆IO线程,但是它没有自己的调度器,而是依赖操作系统来进行调度。

相关内容

热门资讯

英国央行Catherine M... 英国央行Catherine Mann:必须考虑量化紧缩(QT)和一系列利率政策的影响。
原创 香... 在新加坡香格里拉酒店举行的亚太安全论坛上,美国国防部长赫格塞思(Lloyd Austin)于5月31...
美方掐断C919发动机技术,中... 在国际舞台上,当两大经济体相遇,总会引发一场关于技术、资本和市场的角力。最近,中美之间的博弈又一次走...
6800万镑!埃泽“豪言”震惊... 足坛风云变幻,总有那么些球员,他们的名字与豪门绯闻紧密相连,每一次表态都能在转会市场上掀起波澜。这不...
北京警察连续输错5次密码:这就... 几天前,北京丰台的民警上门拦截电信网络诈骗时,发生了紧张的一幕。被骗事主开门时还在与骗子共享屏幕,刚...
美媒公布最新民调:全球对中国好... 【环球网报道 记者 赵建东】美国Axios新闻网2日援引晨间咨询公司(Morning Consult...
韩国新总统最快4日上任,学者:... 韩国总统大选3日即将迎来正式投票。根据选前多项“封关”民调结果,共同民主党候选人李在明仍以明显优势领...
23亿镑仍被冻结!英政府声明:... 直播吧06月03日讯 英国财政大臣瑞秋-里维斯与外交大臣戴维-拉米发表联合声明,就阿布出售切尔西的2...
美国总统特朗普关税政策的法律对... 美国总统特朗普关税政策的法律对头们要求法院在特朗普政府上诉期间暂停实施关税。
芯朋微将于6月18日召开股东大... 金融界6月2日消息,芯朋微发布公告,将于2025年6月18日召开第1次临时股东大会,网络投票同日进行...