假设我想在 n 个单独的事件发生后唤醒一个任务。将信号量初始化为 1 - n 并向下()它是否合法,所以我在每个事件都向上()它之后醒来?
最佳答案
我不这么认为。
(1) semephore.count 声明为unsigned int。参见信号量定义:
struct semaphore {
spinlock_t lock;
unsigned int count;
struct list_head wait_list;
};
(2) down() 函数会在减少计数值之前检查计数值,确保计数不为负数。
除非你实现一种机制,否则你不能直接使用信号量来完成你的要求。
关于linux - 将 linux 内核信号量初始化为负数是否合法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17982877/