嵌入式技术论坛
直播中

杨秀英

8年用户 1465经验值
私信 关注
[问答]

为什么释放信号量时可以释放超过5次而不会报错呢?

请问一下,创建信号量的时候设置了数量为5,为什么释放信号量的时候可以释放超过5次,不会报错。

test_sem = rt_sem_create
("test_sem",/* 计数信号量名字 /
5, /
信号量初始值,默认有5个信号量 /
RT_IPC_FLAG_FIFO); /
信号量模式 FIFO(0x00)*/

回帖(2)

张英

2023-3-16 11:34:17
创建信号量的时候设置了数量为5,表示此时可以获取5次,获取一次值减一。
释放信号量是信号量的值增加,释放一次会变成6,以此类推,所以不会报错。
举报

杨丽

2023-3-16 11:34:23
释放是会增加该信号的计数值,这个信号量设计时就是这样的。而你一进行获取就会减一。信号量只检查该资源是否为零,以标志资源是否耗尽。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分