阅读:1592回复:0
关于 tasklet_schedule 的疑问
我在查LDD2的时候发现,书中特意指出,在Tasklet被真正执行之前是可以发生很多次中断的,我现在的疑问是 tasklet_schedule 这个函数的动作是不是把一个tasklet排队到队列中,并且这个队列是严格先进先出的???!!!
因为我看见很多程序在中断处理函数中调用tasklet_schedule,tasklet也正是为了中断而诞生的 问题一 第一个被排队的tasklet执行之前,可能有发生了10次中断,而这10次中断又将10个tasklet进行了排队,那么,等到第一个tasklet被执行的时候,是否确实就是第一个被排队的那个,即是否是严格的FIFO?? 问题二 此外,这种方法是否说明中断处理函数不能或至少要非常小心的修改全局变量,否则该全局变量如果在tasklet中作为一个标志位判断的话(比如读写标志位),那在第一个tasklet运行前,该变量是有可能被修改N次的,对吧???!!!而此时第一个排队的tasklet运行后肯定会混乱的???!! |
|