gpt4 book ai didi

multithreading - 异步与多线程 - 有区别吗?

转载 作者:行者123 更新时间:2023-12-03 04:30:28 25 4
gpt4 key购买 nike

异步调用总是创建一个新线程吗?两者有什么区别?

异步调用是否总是创建或使用新线程?

Wikipedia says :

In computer programming, asynchronous events are those occurring independently of the main program flow. Asynchronous actions are actions executed in a non-blocking scheme, allowing the main program flow to continue processing.

我知道异步调用可以在单线程上完成吗?这怎么可能?

最佳答案

每当需要异步发生的操作不需要 CPU 执行工作时,该操作就可以在不生成另一个线程的情况下完成。例如,如果异步操作是 I/O,则 CPU 不必等待 I/O 完成。它只需要开始操作,然后可以在 I/O 硬件(磁盘 Controller 、网络接口(interface)等)进行 I/O 工作时继续进行其他工作。硬件通过中断 CPU 来让 CPU 知道它何时完成,然后操作系统将事件传递给您的应用程序。

通常,更高级别的抽象和 API 不会公开操作系统和底层硬件中可用的底层异步 API。在这些情况下,创建线程来执行异步操作通常更容易,即使生成的线程只是等待 I/O 操作。

如果异步操作需要 CPU 执行工作,那么通常该操作必须在另一个线程中发生才能真正实现异步。即使如此,如果有多个执行单元,它实际上只是异步的。

关于multithreading - 异步与多线程 - 有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/600795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com