水木社区手机版
首页
|版面-编程技术(Programming)|
新版wap站已上线
返回
首页
|
上页
|
下页
|
尾页
|
10/15
|
转到
主题:Go语言看着要完啊
90楼
|
lvsoft
|
2023-06-03 08:23:12
|
只看此ID
我推测是来自于stackless python这个说法。
而stackless python最早是2006年提出的,最初源自CCP这个开发了EVE online游戏的公司。
他们在server端用python,当时提出stackless python也是为了解决他们遇到的问题。
https://www.eveonline.com/news/view/stackless-python-2.7
【 在 Bernstein 的大作中提到: 】
: 无栈协程就不知道谁扯出来的名词...
:
--
FROM 114.222.221.*
91楼
|
chaobill
|
2023-06-03 08:28:56
|
只看此ID
有线程,可以多跑,为什么需要协程呢?
【 在 leadu 的大作中提到: 】
: 我去,第一个这种简单问题都需要详细解释。我再用尽可能简单的语言重新描述一下
: 现在假设线程t执行了一个协程c1,协程c1内部有若干操作,其中有1次磁盘同步blocking写入,写入之后更新ui。很常见的场景,对吧
: 当线程t执行到第一次磁盘写入的时候,按照你之前的Jave Green thread说法,下面是编译器或运行时会隐式把这个同步写入转换成异步写入,异步写入开始之后,协程c1挂起,释放线程t。
: ...................
--
FROM 112.66.23.*
92楼
|
GoGoRoger
|
2023-06-03 10:52:40
|
只看此ID
线程数量有限,调度效率低。还有就是Python、js这种,不得不用协成。
【 在 chaobill 的大作中提到: 】
: 有线程,可以多跑,为什么需要协程呢?
※ 来源:·水木社区
http://www.mysmth.net
·[FROM: 106.39.151.*]
FROM 106.39.151.*
93楼
|
keygen
|
2023-06-03 11:38:16
|
只看此ID
望文生义,协程是互相协作的自愿让出资源的,而且基本都是用户态自己搞。
线程是抢占调度的,所以协程资源利用率会高些。
【 在 chaobill 的大作中提到: 】
: 有线程,可以多跑,为什么需要协程呢?
--
FROM 98.45.244.*
94楼
|
hgoldfish
|
2023-06-03 12:18:12
|
只看此ID
但奇葩的是。。stackless python 不使用 async/await 语法,从实现上看,也不搞状态机,而是修改 python 解释器,切换 python 的调用堆栈。后来这个玩法被移植到 cpython 里面弄成 greenlet 这个库。
这种语法和实现方式,现在 c++ 那伙人叫 stackful. 反过来了。。
各个主流语言的协程大体在三个地方有区别:
1. 是否使用 await 语法
2. 用状态机还是用切换堆栈的方式实现
3. 协程会不会在线程间调度。
业界一直没搞太明白概念之间的差别,所以称呼也很乱。
【 在 lvsoft 的大作中提到: 】
: 我推测是来自于stackless python这个说法。
: 而stackless python最早是2006年提出的,最初源自CCP这个开发了EVE online游戏的公司。
: 他们在server端用python,当时提出stackless python也是为了解决他们遇到的问题。
: ...................
--
修改:hgoldfish FROM 183.253.146.*
FROM 183.253.146.*
95楼
|
chaobill
|
2023-06-03 12:37:17
|
只看此ID
那么, cpu 对协程可有什么优化么
【 在 hgoldfish 的大作中提到: 】
: 但奇葩的是。。stackless python 不使用 async/await 语法,从实现上看,也不搞状态机,而是修改 python 解释器,切换 python 的调用堆栈。后来这个玩法被移植到 cpython 里面弄成 greenlet 这个库。
: 这种语法和实现方式,现在 c++ 那伙人叫 stackful. 反过来了。。
: 各个主流语言的协程大体在三个地方有区别:
: ...................
--
FROM 112.66.23.*
96楼
|
lvsoft
|
2023-06-03 14:05:35
|
只看此ID
await在js下都是2017年前后才有的东西。
stackless python比它整整早了10年。
叫不叫async/await是无关紧要的。它的真正的祖宗是continuation。
【 在 hgoldfish 的大作中提到: 】
: 但奇葩的是。。stackless python 不使用 async/await 语法,从实现上看,也不搞状态机,而是修改 python 解释器,切换 python 的调用堆栈。后来这个玩法被移植到 cpython 里面弄成 greenlet 这个库。
: 这种语法和实现方式,现在 c++ 那伙人叫 stackful. 反过来了。。
: 各个主流语言的协程大体在三个地方有区别:
: ...................
--
FROM 114.222.221.*
97楼
|
adoal
|
2023-06-03 14:32:13
|
只看此ID
唉,以前有线程模型1:1、1:N、M:N之争,Sun和几个BSD们力推的M:N后来
它们自己都推不下去,随大流做1:1了。
现在看来,无非就是开发OS的人做,还是开发语言运行时的人做的区别罢了。
【 在 GoGoRoger 的大作中提到: 】
: 线程数量有限,调度效率低。还有就是Python、js这种,不得不用协成。
: ※ 来源:·水木社区
http://www.mysmth.net
·[FROM: 106.39.151.*]
--
FROM 183.128.106.*
98楼
|
lvsoft
|
2023-06-03 14:47:52
|
只看此ID
对的,回到win3.x时代,大家只能用协程~~
【 在 adoal 的大作中提到: 】
: 唉,以前有线程模型1:1、1:N、M:N之争,Sun和几个BSD们力推的M:N后来
: 它们自己都推不下去,随大流做1:1了。
: 现在看来,无非就是开发OS的人做,还是开发语言运行时的人做的区别罢了。
: ...................
--
FROM 114.222.221.*
99楼
|
DragonDon
|
2023-06-03 18:08:24
|
只看此ID
--
FROM 101.204.52.*
首页
|
上页
|
下页
|
尾页
|
10/15
|
转到
选择讨论区
首页
|
分区
|
热推
BYR-Team
©
2010.
KBS Dev-Team
©
2011
登录完整版