在研究生课程中,我们不得不使用信号量来完成线程工作。
我们被指示sem_init
与一堆其他 sem_* 程序一起使用,但我们没有得到关于每个 sem_* 方法的详细信息的太多信息。
的原型(和头文件)sem_init
如下:
#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
参数?