【发布时间】:2023-03-16 23:05:02
【问题描述】:
有没有办法在一个(原子)操作中对不同的信号量进行多次递增/递减?
我看到在 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 中做同样的事情?
【问题讨论】:
-
Posix 有
semop() -
编辑后,
semop()is posix。如果您想知道XSI,请引用标准Application writers may confidently make use of an extension on all systems supporting the X/Open System Interfaces Extension。你有一个实际的系统,你有semaphore.h但没有 XSI 信号量?能分享一下是什么系统吗? -
或者您只是想使用
<semaphore.h>信号量而不是 XSI 信号量(用于其他功能,或匹配现有代码)?
标签: c posix ipc semaphore posix-api