加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-14 00:29:46 所属栏目:Linux 来源:网络整理
导读:假设我想在n个单独事件发生后唤醒任务.将信号量初始化为1 – n和向下()它是否合法,所以我在每个事件都起来之后醒来()它? 解决方法 我不这么认为. (1)semephore.count声明为unsigned int.见信号量定义: struct semaphore { spinlock_t lock; unsigned int c
假设我想在n个单独事件发生后唤醒任务.将信号量初始化为1 – n和向下()它是否合法,所以我在每个事件都起来之后醒来()它?

解决方法

我不这么认为.

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读