C语言 System V信号量-不同函数中的semop()



我在主函数中用semget()semctl()创建并初始化了System V信号量,但semop()函数在另一个函数中调用。我只是将信号量的id作为参数传递给该函数。它看起来像这样:

int manageProcesses(int* data, int* numProcesses, int semId, int mutex, int time)
{
semop(mutex, &semwait, 1);
...
}

这是否有效,或者semop()应该在与semget()semctl()相同的函数中调用?

这是工作还是应该在semget()semctl()的相同函数中调用semop()?

semget()中获得的信号量集的id是具有内核持久性的对象(信号量集)的进程作用域句柄。一旦你获得了一个信号量,你就可以在程序的任何地方与semctl()和/或semop()一起使用它,除非你删除了通过semctl(..., IPC_RMID)设置的信号量,或者其他进程删除了它。

最新更新