时雄有“核心线程”和“阻塞线程”的概念https://recursion.wtf/tracing-honeycomb/tokio/index.html#:~:text= The%20core%20threads%20are%20where,block%20other%20tasks%20from%20running.
核心线程是所有异步代码运行的地方,时雄默认情况下会为每个CPU核心生成一个。阻塞线程是按需生成的,可以用于运行阻塞代码,否则会阻止其他任务运行。
这是所有异步库(甚至是不同语言的异步库)的通用概念,还是仅限于时雄实现?
例如:时雄单线程运行时和python中的asyncio之间最大的概念差异是什么?
1条答案
按热度按时间cwxwcias1#
这不是一个新概念。
我不能代表Python的asyncio,但我可以代表NodeJS;它使用一个主要的单线程事件队列来执行你写的几乎所有东西,但是它有额外的“工作者”线程,NodeJS内部使用这些线程来执行I/O和CPU密集型任务,你也可以利用这些线程来实现这个目的。请参阅指南Don't Block the Event Loop (or the Worker Pool)。
在C#中使用
async
/await
时也可以看到这种模式;任何CPU绑定的代码都不应该直接在async
函数中运行,而是应该通过Task.Run()
在另一个线程的后台执行。参见Microsoft的Asynchronous Programming。目标总是一样的:总是允许小任务运行,以便程序保持响应。