|
楼主 |
发表于 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 :书上这节讲得太少了,稿不明白的说 |
|