声明:下列内容摘自吕进华整理的uC/OS-II 2.0 的chm格式的电子书中。
小心信号量常被用过了头
处理简单的共享变量也使用信号量则是多余的。请求和释放信号量的过程是要花相当的时间的。有时这种额外的负荷是不必要的。用户可能只需要关中断、开中断来处理简单共享变量,以提高效率。(参见2.18.0.1 关中断和开中断)。假如两个任务共享一个32位的整数变量,一个任务给这个变量加1,另一个任务给这个变量清0。如果注意到不管哪种操作,对微处理器来说,只花极短的时间,就不会使用信号量来满足互斥条件了。每个任务只需操作这个任务前关中断,之后再开中断就可以了。然而,如果这个变量是浮点数,而相应微处理器又没有硬件的浮点协处理器,浮点运算的时间相当长,关中断时间长了会影响中断延迟时间,这种情况下就有必要使用信号量了。
总结:
ucOS/II中,对于简单变量等的互斥操作,使用开关中断来实现互斥即可。
对于操作时间长的,如浮点数的处理,则使用信号量来实现互斥访问。
转载请注明:在路上 » 小心信号量常被用过了头