有没有办法在 POSIX 中增加一个信号量并减少另一个信号量?

问题描述

有没有办法在一个(原子)操作中对不同的信号量进行多次递增/递减?

我看到在 SysV 中可以做到这一点,我想知道是否有办法使用 POSIX API 做到这一点。

这是我想做的事情(在 SysV 中):

  sem[0].sem_num = 0;
  sem[0].sem_op  = 1;
  sem[0].sem_flg = 0;

  sem[1].sem_num = 1;
  sem[1].sem_op  = -1;
  sem[1].sem_flg = 0;

  semop(semid,sem,2)

有没有办法在 POSIX 中做同样的事情?

解决方法

有没有办法使用 semaphore.h 做同样的事情?

不,这是不可能的。

有没有办法在 POSIX 中实现相同的

您发布的代码使用了 POSIX 的 XSI 扩展。通常,即使标准规定,如果您在 POSIX 兼容平台上,您可以放心使用 XSI 扩展。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...