最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

利用测试并置位处理共享资源

工作和技术 crifan 3744浏览

声明:下列内容摘自吕进华整理的,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系列,就有这条指令)

转载请注明:在路上 » 利用测试并置位处理共享资源

79 queries in 0.164 seconds, using 19.26MB memory