- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
有人问我是否可以使用以下功能:
void down(struct semaphore* sem);
int down_intterruptible(struct semaphore* sem);
仅来自系统调用?
最佳答案
不,它们可以在允许您休眠的任何内核上下文中使用。例如,内核线程可能执行 down()
。当然,计时器函数不能,因为 down()
可能会休眠。您绝对不需要直接处理系统调用。
顺便说一句,在现代内核中,struct mutex
和 mutex_lock()
优于 struct semaphore
和 down()
除非您确实需要计数信号量,或者需要从与获取信号量的位置不同的上下文中释放信号量。
关于linux - 是否必须从系统调用中调用 down(semaphore) 和 down_interruptible(semaphore)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17462691/
在 Linux 内核模块中,我试图更改如下代码: down(&semaphore1); down(&semaphore2); critical code here! up(&semaphore2
我在理解 LDD3 的以下声明时遇到了一些困难。 “down_interruptible - 它允许等待信号量的用户空间进程被用户中断”。 用户空间应用程序不会直接进行 down_interrupti
我遇到这样一种情况,即在工作队列中使用 spin_lock() 会挂起系统,以防多个中断之间的间隔太短。将 spin_lock() 更改为 down_interruptible() 后,问题暂时消失了
有人问我是否可以使用以下功能: void down(struct semaphore* sem); int down_intterruptible(struct semaphore* sem); 仅来
我是一名优秀的程序员,十分优秀!