This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

C6678信号量

CSL_semAcquireDirect(0);
//do somthing
CSL_semReleaseSemaphore(0);
我使用信号量0,但是release的时候修改register的值,它除了修改了本身信号量regsiter里的值,还把我共享里的数据也修改了(破坏了),请问这是为什么呢。

  • 上面两个语句只是读写相应的semaphore register,并不会修改其他的memory,查一下是否你的代码有修改内存。

  • andy:

    你好,最近在学习信号量的时候遇到几个问题希望得到解答。

    1.直接获取信号量只能通过sem_direct,联合获取信号量只能通过sem_indirect,而间接获取信号量则是三个寄存器都可以么(直接,间接,查询)。信号量的释放也是这三个寄存器都可以释放么?

    2.在sem_direct寄存器下面的注释为: Only if writer is the current owner(只有信号量的拥有者才可以进行写操作),但是如果我是间接获取则需要对sem_direct寄存器进行写00的操作。此时显然我还不是信号量的拥有者,那我还能进行写操作么?

    感谢不吝赐教