请问一下,创建信号量的时候设置了数量为5,为什么释放信号量的时候可以释放超过5次,不会报错。
test_sem = rt_sem_create ("test_sem",/* 计数信号量名字 */ 5, /* 信号量初始值,默认有5个信号量 */ RT_IPC_FLAG_FIFO); /* 信号量模式 FIFO(0x00)*/
查看更多
创建信号量的时候设置了数量为5,表示此时可以获取5次,获取一次值减一。释放信号量是信号量的值增加,释放一次会变成6,以此类推,所以不会报错。
你 list_sem 会发现当前值为10呢
释放是会增加该信号的计数值,这个信号量设计时就是这样的。而你一进行获取就会减一。信号量只检查该资源是否为零,以标志资源是否耗尽。
1
回到 顶部
发布 问题
分享 好友
手机 浏览
投诉 建议
回到 底部
好的,谢谢!