1. 协程有同步问题。方案有锁方案,还有消息传递。你说的 whenany 难道就不是同步?这个“同步”是操作系统同步原语的那个概念,不是指具体实现啊。go 里面也是一行: done := <-chan
2. 没有什么二代一代,这是你自己发明的概念。别人都不会这么叫。
3. c# whenany 用太多代码了。仅仅这个 whenany 同步的话,让 java + project loom 来搞,应用 condition, 10 行不到代码应该可以搞定吧,还是算上 {} 单独一行的。随便瞄了一眼,你发的那个文件都七千多行了,还不算其它的。
4. 不看 python 看 go 去呗。java 的 project loom 还没有合并到主线,不然我就叫你看 java 去了。但 go 和 java 没有 async/await,channel 只有一行代码,实在没啥好看的。
5. 你一直想证明 c# 的协程是吊打一切的存在,巨硬领先业界 30 年。但好像目前还没有人同意你的看法。这里是 cpp 版,我和前面 ylh1969 大神讨论 c/cpp 的协程,你没必要再乱入 c# 啊。
【 在 leadu (leadu) 的大作中提到: 】
: 标 题: Re: c/c++的开发人员是不是越来越少了?
: 发信站: 水木社区 (Wed Dec 1 21:46:42 2021), 站内
:
: github可以点进各个子函数看,可以看看全部语义是几行。
:
: 讨论起因是你说协程有同步问题,举例说调用3个协程等一个返回之后继续,这种情况是个问题。
: 我和你说,二代协程没有这个问题,你说的是一代协程的问题。c#里面,你举例的情况就是个task.whenany()一行
: 你说,不可能,task.whenany内部实现可能有300行并有协程间通信
: 我说,源代码在此,你自己看task.whenany有没有300行。同时指出二代协程的设计思路是和一代不一样的,这种情况不需要锁,或者至少不需要协程间通信
: 你说,看python
:
: 可为什么要看python?论证逻辑在哪里?
:
: 别人只需要举例证明有些语言的实现没有你预期的同步问题,剩下的是你使用的语言问题了
:
: 【 在 hgoldfish 的大作中提到: 】
: : 单是 whenany,在 python 里面也就几行。
: : 我说的是全部同步语义的实现代码行数。这可比 c# 少多了。你再仔细去研究 dotnot 的实现吧。它的协程实现不可能比 python 简单的,因为 python 是单线程的,而 c# 是多线程。刚好这俩语言都支持最基础的 async/await
: :
:
: --
:
: ※ 来源:·水木社区
http://www.mysmth.net·[FROM: 123.116.198.*]
--
FROM 140.224.34.*