Gab*_*air 9 multithreading semaphore
在一个类中,我们必须使用信号量来完成线程的工作.sem_init的原型(和头文件)如下:
int sem_init(sem_t*sem,int pshared,unsigned int value);
但我不明白值变量的用途.根据opengroup.org:
value是将信号量设置为的初始值
"价值是一种价值......"这有什么帮助,它用于什么?
小智 5
信号量值表示可在线程之间共享的公共资源的数量。如果该值大于 0,则调用 sem_wait 的线程不需要等待。它只是将值减 1 并继续访问公共资源。sem_post 会将资源添加回池中。所以它将值增加 1。如果值是 0,那么我们将等到有人完成了 sem_post。
小智 1
sem_init() 初始化一个指向信号量(第一个参数),并带有值(最后一个参数),最后我相信这实际上就是您所要求的, int pshared 您可以将其视为一个标志。如果 pshared == 1 那么信号量可以被分叉。
编辑:信号量具有 int 值,因为您将使用 sem_wait(sem_t* sem) 等函数来减少指向信号量的值。如果为负数,则阻止。