【发布时间】:2010-11-20 11:09:54
【问题描述】:
在研究生课程中,我们不得不使用信号量来完成线程工作。
我们被指示使用sem_init 和一堆其他 sem_* 过程,但我们没有得到关于这些 sem_* 方法的详细信息的太多信息。
sem_init的原型(和头文件)是the following:
#include <semaphore.h>
int sem_init(sem_t *sem, int pshared, unsigned int value);
但我不明白 pshared 值的用途。根据opengroup.org:
如果
pshared参数有一个非零 值,则共享信号量 进程之间;在这种情况下,任何 可以访问信号量的进程sem可以使用sem进行表演sem_wait(),sem_trywait(),sem_post(), 和sem_destroy()操作。
但我想我不明白 1,2、10、25、50000 等之间的区别。我认为这是说如果值为 0 则不共享信号量。 (但是,有什么意义呢?)
如何正确使用这个pshared参数?
【问题讨论】: