Skip to main content
 首页 » 编程设计

python之线程与异步

2024年02月27日11zengkefu

我一直在阅读这篇非常好的文章中的线程编程模型与异步模型。 http://krondo.com/blog/?p=1209

但是,文章提到了以下几点。

  1. 只要有 I/O,异步程序就会在任务之间进行切换,从而比同步程序表现更好。
  2. 线程由操作系统管理。

我记得读过,操作系统通过在就绪队列和等待队列(以及其他队列)之间移动 TCB 来管理线程。在这种情况下,线程也不会浪费时间等待,不是吗?

综上所述,异步程序相对于线程程序有哪些优势?

请您参考如下方法:

  1. 编写线程安全的代码非常困难。使用异步代码,您可以准确地知道代码将从一个任务转移到下一个任务的位置,因此竞争条件更难获得。
  2. 线程消耗大量数据,因为每个线程都需要有自己的堆栈。使用异步代码,所有代码共享相同的堆栈,并且由于在任务之间不断展开堆栈,因此堆栈保持较小。
  3. 线程是操作系统结构,因此是平台支持的更多内存。异步任务就不存在这个问题。

2022 年更新:

许多语言现在支持无堆栈协同例程(异步/等待)。这允许我们几乎同步地编写一个任务,同时在设定的位置( sleep 或等待网络或其他线程)让出其他任务(awaiting)