- 主题:把js全干掉,统一成ts,有没有搞头?
自认为C#中await多余的人我见过很多,一般来说都是缺少某方面计算机专业知识的资深C++马龙
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 我对 python 最不满意的地方就是加了这个特性。
: js 最大的失误也是加了这个特性。
--
FROM 27.91.71.*
OS是先有了异步io然后在异步io上做了同步io,await只不过是更接近底层的写法而已
99%的await都不是在wait一个thread算矩阵,只是wait磁盘,网络等等IO
【 在 hgoldfish (老鱼) 的大作中提到: 】
: c# 不多余,很合适,非常好。。
: python 里面多余,
: js 抄袭这个语法更是垃圾。
: ...................
--
FROM 27.91.71.*
v8相当于cpu,js是汇编,效率是第一位的。
【 在 libgcc (乞讨积分,求施舍,长期有效) 的大作中提到: 】
: v8跟tsc融合,搞成原生支持ts的
: 所有浏览器全改成原生支持ts
: deno和node整合,原生支持ts
: ...................
--
FROM 27.91.71.*
传统JavaScript等价于隐式协程,阻塞操作实际上并不block本线程
nodejs发家的c10k问题玩的就是无阻塞,就是协程的变体
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 不是不支持协程,,没看我怎么说的,“多用协程解决一切问题“。
: 我比较希望 js 能够隐式地支持协程。。
: c# 为什么选择 async/await 两个关键词,因为 c# 本身是支持线程的,老旧的 c# 程序都会调用 win32api 里面的阻塞 IO API,以及创建线程做并行计算. 为了在阻塞 IO 这一套语义之外并存地支持协程,c# 不得不额外支持 async 函数,显式地告诉程序员,这是个协程操作。
: ...................
--
FROM 27.91.71.*
C#的协程禁止大部分互斥机制,强制要写无锁的
【 在 chaobill (若我离去,后会无期) 的大作中提到: 】
: 比如 全局锁,然后 判断的时候 io 等 协程了。
: 大概这样的代码
--
FROM 27.91.71.*
没人逼你把计算函数写成async啊
【 在 beep (菜M.喵星耗子) 的大作中提到: 】
: 哪怕io操作都要协程化,为啥所有函数都要async?我写个1加1纯计算函数也要进事件循环?
--
FROM 27.91.71.*
你还是不明白,多线程和async是两回事的,大部分async实际上是单线程的
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 我前面说过了啊。。
: python 有 GIL,约等于不支持多线程。python 日常使用的多线程,通常是用于阻塞 IO 的。
: 现在只要把所有的线程阻塞 IO 都替换成协程阻塞 IO,把 threading 模块替换成接口完全一样的 fiber 实现,那大多数 python 源代码,就可以在完全不修改的情况下,使用协程了。
: ...................
--
FROM 27.91.71.*
所谓语法糖,是为了把等价的东西写的更简明。。。
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 跟 promise 一点区别都没有,发明这个语法糖干什么?
: 我觉得用 async/await 最大的好处是跟你们这些 fp 党划清界限。少了很多扯皮。
--
FROM 27.91.71.*
他说的没错。。。
比如eventlet首页上Web Crawler Example这个例子吧,把urlopen.read包在协程里实现async,这个做法本质上就不对
tcp/ip原生支持异步读取,同步api也是用异步加wait包出来的,async应该直接用更底层的api而不是多包一遍浪费资源
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 加 spawn 等价于不写 await,都是程序员自己的动作。跟编译器没关系。
: 你喷这个不行那个不能实现。。怎么不去看一下 eventlet/gevent ? 我说的都是成熟应用十几年的技术了。
--
FROM 27.91.71.*
引用的官网原话,你是说官网也没你懂eventlet么?
import eventlet
# note: this urllib import doesn't work in Python2
from eventlet.green.urllib.request import urlopen
urls = [
"http://www.google.com/intl/en_ALL/images/logo.gif",
"https://wiki.secondlife.com/w/images/secondlife.jpg",
"http://us.i1.yimg.com/us.yimg.com/i/ww/beta/y3.gif",
]
def fetch(url):
return urlopen(url).read()
pool = eventlet.GreenPool()
for body in pool.imap(fetch, urls):
print("got body", len(body))
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 标 题: Re: 把js全干掉,统一成ts,有没有搞头?
: 发信站: 水木社区 (Sun Jul 4 12:16:42 2021), 站内
:
: 哇。您老又懂 eventlet 了!
:
: 【 在 xiaoju (可爱的龙猫) 的大作中提到: 】
: : 他说的没错。。。
: : 比如eventlet首页上Web Crawler Example这个例子吧,把urlopen.read包在协程里实现async,这个做法本质上就不对
: : tcp/ip原生支持异步读取,同步api也是用异步加wait包出来的,async应该直接用更底层的api而不是多包一遍浪费资源
: : ...................
:
: --
: 灭绝人性啊
:
:
: ※ 来源:·水木社区 mysmth.net·[FROM: 112.47.122.*]
--
FROM 27.91.71.*