有人问我是否可以使用以下功能:

void down(struct semaphore* sem);
int down_intterruptible(struct semaphore* sem);

只从系统调用?

最佳答案

不,它们可以在允许睡眠的任何内核上下文中使用。例如,内核线程可以执行down()。当然,计时器功能不能,因为down()可能会休眠。您绝对不需要直接处理系统调用。
另外,在现代内核中,struct mutexmutex_lock()struct semaphoredown()更受欢迎,除非您确实需要计算信号量,或者需要从不同于获取信号量的上下文释放信号量。

关于linux - 是否必须从系统调用中调用down(semaphore)和down_intterruptible(semaphore)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17462691/

10-11 16:31