Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何将POSIX sem\t信号量增加1以上?_C_Pthreads_Semaphore - Fatal编程技术网

C 如何将POSIX sem\t信号量增加1以上?

C 如何将POSIX sem\t信号量增加1以上?,c,pthreads,semaphore,C,Pthreads,Semaphore,我可以让sem_t(信号量)对象的a值大于1吗?由于sem_post仅增加1。是否有扫描电镜集?是的,扫描电镜的值可以大于1。您可以使用sem_init将信号量初始化为一个二进制值。引述自: 要初始化信号量,请使用 sem_init(): sem指向一个信号量对象 初始化 pshared是一面旗帜 指示 信号量应与共享 fork()是一个复杂的进程。LinuxThreads有 当前不支持共享 信号量 值是一个初始值 将信号量设置为 举例 使用: 我不知道有任何函数可以将sem\t增加任意值

我可以让sem_t(信号量)对象的a值大于1吗?由于sem_post仅增加1。是否有扫描电镜集?

是的,扫描电镜的值可以大于1。您可以使用
sem_init
将信号量初始化为一个二进制值。引述自:

要初始化信号量,请使用 sem_init():

  • sem指向一个信号量对象 初始化
  • pshared是一面旗帜 指示 信号量应与共享 fork()是一个复杂的进程。LinuxThreads有 当前不支持共享 信号量
  • 值是一个初始值 将信号量设置为
举例 使用:


我不知道有任何函数可以将sem\t增加任意值

另请参见这个问题,可能重复:pshared不会使信号量与分叉的子级共享。只有在已经共享的内存中创建信号量时,它才有用,在这种情况下,pshared信号量可以与任何其他可以映射共享内存的进程共享,而不仅仅是子进程。
  int sem_init(sem_t *sem, int pshared, unsigned int value); 
  sem_init(&sem_name, 0, 10);