有没有办法在 POSIX 中增加一个信号量并自动减少另一个信号量?
Is there a way to increment a semaphore and decrement another one atomically in 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 中做同样的事情?
Is there a way to do same using semaphore.h
?
不,不可能。
Is there a way to do the same in POSIX?
您发布的代码使用 POSIX 的 XSI 扩展。通常,即使标准规定如果您在 POSIX 兼容平台上,您也可以放心使用 XSI 扩展。
有没有办法在一个(原子)操作中对不同的信号量进行多次递增/递减?
我看到在 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 中做同样的事情?
Is there a way to do same using
semaphore.h
?
不,不可能。
Is there a way to do the same in POSIX?
您发布的代码使用 POSIX 的 XSI 扩展。通常,即使标准规定如果您在 POSIX 兼容平台上,您也可以放心使用 XSI 扩展。