我正在阅读以下链接中的半同步/半异步模式。
http://www.cs.wustl.edu/~schmidt/PDF/PLoP-95.pdf
http://www.cs.wustl.edu/~schmidt/PDF/HS-HA.pdf
在第8.2节“确定短期任务和”中提到了这一点 使用异步I / O实现它们。
使用被动的被动对象实现这些短期任务 模型。被动对象借用其他地方的控制线 (例如调用者或单独的中断堆栈)。因此,这些 任务必须使用异步I / O,因为它们不能长时间阻塞 一段时间。不阻止的主要动机是确保 其他系统任务的响应时间足够。
我的问题是
简化编程需求:编程异步I / O模型 可能很复杂,因为输入和输出操作是由触发的 中断。异步会导致细微的计时问题和竞争 控制当前控制线被抢占的条件 中断处理程序而且,中断驱动的程序需要额外的 除了运行时堆栈之外的数据结构。
作者对aysnc的意思是什么导致细微的计时问题(这里有请求示例)?
为什么中断驱动程序除运行时堆栈外还需要额外的数据结构。
总的来说,作者提到信号或中断是异步和多线程,多进程是同步吗?为什么呢?
我是aysnc概念的新手,所以需要你的帮助。
感谢您的时间和帮助。
答案 0 :(得分:1)
操作系统可以编码为使用一个线程从网络读取数据包,另一个线程处理数据包。但是,当效率低下时,则使用相同的线程来读取和处理数据包。如果您认为该线程“属于”操作系统中读取数据包的代码,那么在某种意义上它是由处理数据包的代码“借用”的。即使线程操作期间线程优先级或权限发生变化,它仍然是同一个线程。
此外,如果担心创建和销毁线程的成本,则可以将一组线程预先分配为线程池。线程可以从这个池中“借用”并随后返回。
异步处理容易出现竞争条件,因此编程比同步处理更具挑战性。