【发布时间】:2019-08-12 21:54:31
【问题描述】:
我是编程新手,只是一个关于异步编程实际工作原理的问题。 我们知道中断是异步发生的,因为来自 I/O 设备的信号是 处理器外部。例如,当处理器执行完一条指令,并且处理器注意到中断引脚已经变高(例如网络适配器通知有数据来),从系统总线读取异常号,然后调用相应的中断处理程序。当处理程序返回时,它将控制权返回给下一条指令。 所以它需要硬件支持。 (分配给 I/O 的专用管脚) 那么异步编程如何在没有硬件支持的情况下工作,操作系统如何向当前进程发送“Hi the result is ready, come and get it”的“通知”。 据我了解,如果没有硬件支持,我们只能通过多线程或多进程来实现。
【问题讨论】:
-
多线程(至少,常见的抢先式风格)也使用中断——具体来说,当当前时间片结束并且调度程序需要选择另一个时,会引发一个定时器中断线程为下一个量程执行。
标签: multithreading asynchronous exception operating-system