关于在操作系统级别实现异步编程的问题

Questions about the implementation of async programming on OS level

提问人:Ali Berat Çetin 提问时间:3/2/2022 更新时间:3/2/2022 访问量:36

问:

我不相信一些关于异步编程实现的说法。

我知道,如果线程请求“任何”IO 操作,例如读取文件描述符(stdin、stdout 等)的缓冲区、监听管道、在套接字或硬盘驱动器上读取和写入,会立即将相应的线程发送到“阻塞状态”。CPU 不会处理此线程,直到它转到“就绪状态”。

我的问题是,程序如何利用单个(主)线程来执行 IO 任务,而无需创建分配给每个 IO 任务的多个线程。

我的第二个问题是,如果异步编程是通过多个线程实现的,即使它们是轻量级线程,为什么在 NodeJS 或 Javascript 等情况下它被称为单线程。

我的第三个问题是,如果异步编程是通过多线程实现的,它如何提供内存效率?

感谢您的回答。

多线程异 IO 操作系统

评论

0赞 user207421 3/2/2022
如果它是在操作系统级别实现的,则它与用户线程完全无关。
0赞 Jérôme Richard 3/2/2022
虽然这些问题很有趣,但它们非常广泛,不是很清楚/精确。因此,这不容易回答,提供的答案(如果有的话)可能含糊不清。请为每个帖子提出一个详细问题。
0赞 Ali Berat Çetin 3/2/2022
@JérômeRichard非常感谢,但我应该用我的问题制作一个决策树,因为我真的很好奇这个顺序,按照这个顺序搜索答案以理解整个概念是件好事。

答: 暂无答案