最近在研究异步消息处理, 突然想起linux内核的中断处理, 里面由始至终都贯穿着”重要的事马上做, 不重要的事推后做”的异步处理思想....正在处理同一中断的那个CPU完成一次处理后, 会再次检查”触发”标记, 如果设置, 则再次触发处理过程.
于是, 中断的处理是一个循环过程, 每次循环调用handle_IRQ_event来处理中断....因为这样可以按软中断触发的顺序来执行这些软中断,否则后来的软中断可能就会先执行完成了。...据说在montavista(一种嵌入式实时linux)中, 将内核的中断机制做了修改. (某些中断的)中断处理过程被赋予了task结构, 能够被内核调度. 解决了上述两个问题....工作队列
linux基线版本的内核在解决上述问题上, 提供了workqueue机制.