运维开发网

将Linux内核信号量初始化为负数是否合法?

运维开发网 https://www.qedev.com 2020-05-31 10:13 出处:网络
假设我想在n个单独事件发生后唤醒任务.将信号量初始化为1 – n和向下()它是否合法,所以我在每个事件都起来之后醒来()它?
假设我想在n个单独事件发生后唤醒任务.将信号量初始化为1 – n和向下()它是否合法,所以我在每个事件都起来之后醒来()它? 我不这么认为.

(1)semephore.count声明为unsigned int.见信号量定义:

struct semaphore {
        spinlock_t      lock;
        unsigned int        count;
        struct list_head    wait_list;
    };

(2)down()函数将在减小之前检查计数值,确保计数不是负数.

除非您实现一种机制,否则不能直接使用信号量来完成您的要求.

0

精彩评论

暂无评论...
验证码 换一张
取 消