- 主题:C++20的协程是劫持了系统调用?
--
FROM 120.244.140.*
【 在 buildtolast 的大作中提到: 】
: 就是普通的用户态线程啊
那io怎么办
--
FROM 114.242.250.*
【 在 hgoldfish 的大作中提到: 】
: 碰到 IO 的时候切换到事件循环协程。所谓的切换就是汇编的 jmp 指令。
:
还是劫持了系统调用啊
--
FROM 123.126.3.*
【 在 hgoldfish 的大作中提到: 】
: 不是啊。。原本就有 nonblocking 版本。一般说来,为协和构建的 IO 库都会主动调用 nonblocking io. 不必搞啥劫持系统调用。协程并不减少 read/write 这些系统调用的次数。甚至还多了。
: 考虑 sleep(), lock(), unlock() 这些函数原本会陷入内核态中,但是在协程库里面,一般实现为带着参数 jmp 到事件循环协程就行了。没有任何系统调用。协程主要减少线程陷入内核态的时间,实现得好的话,能够提升一点 IO 性能。
: 但是也有一些协程库,通过 hook libc 的 read/write 等函数,将它改造成 nonblocking io 同时切换协程来无缝适配现有的代码。不过这种做法现在很少了。严格来说,他们 hook 的 libc,并不能 hook 系统调用。
: ...................
还是太弱了啊,对存量lib没用
--
FROM 120.244.140.*
【 在 hgoldfish 的大作中提到: 】
: libgo 那些就是 hook 存量的 app.
:
不知道什么时候可以语言级支持printf的时候切换协程
--
FROM 120.244.140.*