声明:下列内容摘自吕进华整理的,uC/OS-II 2.0 的chm格式的电子书中。
2.18.2 测试并置位
如果不使用实时内核,当两个任务共享一个资源时,一定要约定好,先测试某一全程变量,如果该变量是0,允许该任务与共享资源打交道。为防止另一任务也要使用该资源,前者只要简单地将全程变量置为1,这通常称作测试并置位(Test-And-Set),或称作TAS。TAS操作可能是微处理器的单独一条不会被中断的指令,或者是在程序中关中断做TAS操作再开中断,如程序清单2.5所示。
程序清单2.5 利用测试并置位处理共享资源 |
Disable interrupts; 关中断 |
if (‘Access Variable’ is 0) { 如果资源不可用,标志为0 |
Set variable to 1; 置资源不可用,标志为1 |
Reenable interrupts; 重开中断 |
Access the resource; 处理该资源 |
Disable interrupts; 关中断 |
Set the ‘Access Variable’ back to 0; 清资源不可使用,标志为0 |
Reenable interrupts; 重新开中断 |
} else { 否则 |
Reenable interrupts; 开中断 |
/* You don’t have access to the resource, try back later; */ /* 资源不可使用,以后再试; */ |
} |
有的微处理器有硬件的TAS指令(如Motorola 68000系列,就有这条指令)
转载请注明:在路上 » 利用测试并置位处理共享资源