有人问我是否可以使用以下功能:
void down(struct semaphore* sem);
int down_intterruptible(struct semaphore* sem);
只从系统调用?
最佳答案
不,它们可以在允许睡眠的任何内核上下文中使用。例如,内核线程可以执行down()
。当然,计时器功能不能,因为down()
可能会休眠。您绝对不需要直接处理系统调用。
另外,在现代内核中,struct mutex
和mutex_lock()
比struct semaphore
和down()
更受欢迎,除非您确实需要计算信号量,或者需要从不同于获取信号量的上下文释放信号量。
关于linux - 是否必须从系统调用中调用down(semaphore)和down_intterruptible(semaphore)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17462691/