LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 768|回复: 1

请教关于信号量(semaphore)的几个问题

[复制链接]
发表于 2007-5-13 17:52:16 | 显示全部楼层 |阅读模式
这几天在看系统编程里的semaphore部分,先说以下我对semaphore的理解:信号量集合中含有一个或多个信号量,每个信号量“控制”(或者说叫对应)一个资源(比如文件).
有几点不是狠命百:
1.信号量的数值。我看到大多数情况是1.书中提到说可以设为其他值,比如说3 ,4,5....那么排斥性操作时是怎样做的呢?(对于1的情形是减1去锁定资源,加1释放资源)
2.操作资源时都如下写成:
sem_op.sem_num = 0; 这个不是很明白:到底是信号量的数值还    是信号量的ID ?????
sem_op.sem_op = -1;
sem_op.sem_flg = 0;
以上三句话是什么意思?????????
semop(sem_set_id, &sem_op, 1);//此函数是设置信号量数值为0吗?这个函数的具体定义是怎样的?在sem.h只看到原型
//操作过程
.............................
//把信号灯的数值加1
sem_op.sem_num = 0;
sem_op.sem_op = 1;
sem_op.sem_flg = 0;
semop(sem_set_id, &sem_op, 1);
3.对于含有两个信号量s1,s2的信号量集合,semop()函数怎样标记它们?
4.书上还说有两种信号量:1--->0--->1 ;0---->1----->0对于第二种上面的过程改怎样改写?
PS :书上这节讲得太少了,稿不明白的说
 楼主| 发表于 2007-5-13 19:48:16 | 显示全部楼层

请教关于信号量(semaphore)的几个问题

这几天在看系统编程里的semaphore部分,先说以下我对semaphore的理解:信号量集合中含有一个或多个信号量,每个信号量“控制”(或者说叫对应)一个资源(比如文件).
有几点不是狠命百:
1.信号量的数值。我看到大多数情况是1.书中提到说可以设为其他值,比如说3 ,4,5....那么排斥性操作时是怎样做的呢?(对于1的情形是减1去锁定资源,加1释放资源)
2.操作资源时都如下写成:
sem_op.sem_num = 0; 这个不是很明白:到底是信号量的数值还    是信号量的ID ?????
sem_op.sem_op = -1;
sem_op.sem_flg = 0;
以上三句话是什么意思?????????
semop(sem_set_id, &sem_op, 1);//此函数是设置信号量数值为0吗?这个函数的具体定义是怎样的?在sem.h只看到原型
//操作过程
.............................
//把信号灯的数值加1
sem_op.sem_num = 0;
sem_op.sem_op = 1;
sem_op.sem_flg = 0;
semop(sem_set_id, &sem_op, 1);
3.对于含有两个信号量s1,s2的信号量集合,semop()函数怎样标记它们?
4.怎样得到占有资源时,和释放时信号量的数值
5.书上还说有两种信号量:1--->0--->1 ;0---->1----->0对于第二种上面的过程改怎样改写?
PS :书上这节讲得太少了,稿不明白的说
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表