线程与异步 [英] Threads vs. Async

查看:30
本文介绍了线程与异步的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have been reading up on the threaded model of programming versus the asynchronous model from this really good article. http://krondo.com/blog/?p=1209

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

However, the article mentions the following points.

  1. 只要有 I/O,异步程序就会通过在任务之间切换来胜过同步程序.
  2. 线程由操作系统管理.

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

I remember reading that threads are managed by the operating system by moving around TCBs between the Ready-Queue and the Waiting-Queue(amongst other queues). In this case, threads don't waste time on waiting either do they?

综上所述,异步程序相对于线程程序的优势是什么?

In light of the above mentioned, what are the advantages of async programs over threaded programs?

推荐答案

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

这篇关于线程与异步的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆