IPC::Semaphore - SysV 信号量 IPC 对象类
use IPC::SysV qw(IPC_PRIVATE S_IRUSR S_IWUSR IPC_CREAT);
use IPC::Semaphore;
$sem = IPC::Semaphore->new(IPC_PRIVATE, 10, S_IRUSR | S_IWUSR | IPC_CREAT);
$sem->setall( (0) x 10);
@sem = $sem->getall;
$ncnt = $sem->getncnt;
$zcnt = $sem->getzcnt;
$ds = $sem->stat;
$sem->remove;
一个提供基于对象的接口来访问 SysV IPC 信号量的类。
创建一个与 KEY
关联的新信号量集。NSEMS
是信号量集中信号量的数量。如果满足以下条件,则会创建一个新的信号量集:
KEY
等于 IPC_PRIVATE
KEY
还没有与之关联的信号量标识符,并且 FLAGS & IPC_CREAT
为真。
在创建新的信号量集时,FLAGS
用于设置权限。注意不要设置 Sys V IPC 实现不允许的任何标志:在某些系统中,设置执行位会导致操作失败。
以数组形式返回信号量集的值。
返回等待信号量 SEM
大于其当前值的进程数量。
返回最后对信号量 SEM
执行操作的进程 ID。
返回信号量 SEM
的当前值。
返回等待信号量 SEM
变为零的进程数量。
返回信号量集的系统标识符。
OPLIST
是要传递给 semop
的操作列表。OPLIST
是多个较小列表的串联,每个列表包含三个值。第一个是信号量编号,第二个是操作,最后一个是标志值。有关更多详细信息,请参阅 semop(2)。例如
$sem->op(
0, -1, IPC_NOWAIT,
1, 1, IPC_NOWAIT
);
从系统中删除并销毁信号量集。
set
将设置与信号量集关联的 stat
结构的以下值。
uid
gid
mode (only the permission bits)
set
接受由 stat
方法返回的 stat 对象,或 name-value 对列表。
将信号量集中所有值设置为 VALUES
列表中给出的值。VALUES
必须包含正确数量的值。
将信号量集中第 N
个值设置为 VALUE
。
返回类型为 IPC::Semaphore::stat
的对象,它是 Class::Struct
的子类。它提供以下字段。有关这些字段的描述,请参阅您的系统文档。
uid
gid
cuid
cgid
mode
ctime
otime
nsems
IPC::SysV,Class::Struct,semget(2),semctl(2),semop(2)
Graham Barr <[email protected]>,Marcus Holland-Moritz <[email protected]>
版本 2.x,版权所有 (C) 2007-2013,Marcus Holland-Moritz。
版本 1.x,版权所有 (c) 1997,Graham Barr。
本程序是自由软件;您可以在 Perl 本身相同的条款下重新发布和/或修改它。