为什么只有 go 语言原生支持协程?

2023-08-10 13:27:31 +08:00
 wmwm

大部分语言的协程都是基于 epoll/select 机制,由于 epoll/select 只能处理 IO 问题,所以导致大部分语言的协程也只能处理 IO 问题

而 go 语言的协程可以在任何情况下使用,是真正意义上的协程,底层是通过汇编指令 pop/push 保存上下文

以上理解正确吗?

6905 次点击
所在节点    程序员
46 条回复
wetalk
2023-08-11 16:34:26 +08:00
回到线程的定义:操作系统能够进行运算调度的最小单位。协程不是必须的
wonderblank
2023-08-11 17:41:15 +08:00
@wanguorui123

> 设计目的都是为了高吞吐量,榨干系统性能

你年纪太小了,也不能说你错。
charlie21
2023-08-11 17:46:36 +08:00
Golang 采用的 CSP 模型和 Erlang 的 Actor 模型
https://zhuanlan.zhihu.com/p/27341488
julyclyde
2023-08-11 19:44:20 +08:00
能提出这种问题,说明思维方式有问题
bthulu
2023-08-12 16:33:46 +08:00
epoll 又不是什么牛逼机制, 纯属微软作死导致 epoll 在服务端一家独大. 你可以试试 iocp, 比 epoll 强多了, 偏偏支持的没几个.
inshua
2023-08-12 18:37:30 +08:00
erlang 早就有了,那几年 erlang 火了一阵,后来实在太非主流了用的就少了,但是设计思想传播出去了就有了一堆衍生,当然协程出现的更早,但是在并发领域用协程 erlang 应该算是早的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/964072

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX