将一个信号量分配给另一个

Assigning one semaphore to other

我可以将一个信号量分配给另一个信号量吗,两者的行为相同,例如。(此 vxworks 代码)

   mySemId = semCreate(...)
       tempSemId = mySemId;
    semTake(tempSemId,...);
   ...
   semGive(mySemId).

上面的代码片段是否可以锁定资源。

其次,如果这可行,是否存在不允许此类处理的编码标准或惯例。

vxWorks semaphore IDs是可复制的,复制的是"just as good"原样,所以这里展示的代码样例没有错。不过,这似乎不是一个特别好的主意。很难从这个片段中看出整个代码是什么样子的,而且在更大的代码块中,我认为很难区分哪些信号量被 Taken 哪些信号量被 Given。

(这不是 C 语言问题:vxWorks 信号量主要 来自 C,但不是 语言定义。 )