红联Linux门户
Linux帮助

关于获取信号量函数down的疑问

发布时间:2016-04-21 16:08:22来源:红联作者:小军
各位大侠,小弟初学内核,多多关照。看到信号量这章,关于__down()函数看不明白,望赐教。
for (;;) {
int sleepers = sem->sleepers;
if (!atomic_add_negative(sleepers - 1, &sem->count)) {
sem->sleepers = 0;
break;
}
...
}
为什么说:如果(sleepers - 1 + sem->count)非负,则说明semaphore已经被释放,可以从循环里返回?
望不吝赐教,谢谢!
文章评论

共有 0 条评论