如何获得在php中定义信号量资源的键


How to obtain the key with which a semaphore resource was defined in php?

在php中有一个函数sem_get,它返回一个id,可以用来访问一些key的System V信号量:

resource sem_get ( int $key [, int $max_acquire = 1 [, int $perm = 0666 [, int $auto_release = 1 ]]] )

给定一个信号量资源,我能找出什么key(即什么整数值)被用来创建这个资源吗?是否有一种方法来"反转"sem_get函数?

最好的方法是保持一个字典/关联数组,将id从sem_get映射到用于创建它的key

对于使用信号量的每个PHP进程来说,这个关联数组可以是本地的/独占的,因为每次调用sem_get都会得到一个不同的id,因此这些id对其他进程来说是无用的。

不这么认为。如果你使用两次sem_get,你会得到不同的结果,但仍然是相同的键。