这到底是为什么?perl semaphore
#!/usr/bin/perl
use strict;
use IPC::SysV qw(IPC_CREAT S_IRUSR GETVAL SETVAL);
our $id;
$id= semget(1234,0,0666|IPC_CREAT);
print "$id/n";
&setval();
my $kkk=&getval();
print $kkk;
while(1) {
&lock();
print "lock";
&setval();
print "unlock";
sleep (1);
}
sub lock()
{
my $oper = pack("s!s!s!",0,-1,0);
semop($id,$oper);
}
sub unlock()
{
my $oper = pack("s!s!s!",0,1,0);
semop($id,$oper);
}
sub getval()
{
my $kkk = semctl($id,0,GETVAL,0);
return $kkk;
}
sub setval()
{
semctl($id,0,SETVAL,1);
}上面是小弟写的程序,但是执行的时候为什么进程就睡眠了?把while循环注销了就能正常运行了,平生第一次郁闷的碰到这个事情,明白的解释下
...全文
相关推荐
perl多线程教程集
线程通信:Perl提供了一些同步原语,如锁(mutex)、条件变量(condition variable)和信号量(semaphore),用于线程间的通信和同步。
Perl线程的发展历程与架构
首先,由于每个线程都有自己的解释器,线程间的资源共享需要通过共享变量等机制来实现,这可能带来一些同步和竞争条件的问题。首先,由于每个线程都有自己的解释器,线程间的资源共享需要通过共享变量等机制来实现,这可能带来一些同步和竞争条件的问题。Perl在其早期版本中并没有原生支持线程,但随着时间的推移,对于多线程编程的需求越来越大,Perl的线程功能也得到了改进和扩展。Perl在其早期版本中并没有原生支持线程,但随着时间的推移,对于多线程编程的需求越来越大,Perl的线程功能也得到了改进和扩展。
Apache No space left on device的解决办法
例如:```# ipcs -s------ Semaphore Arrays --------key semid owner perms nsems0x00000000 19234816 nobody
Multi thread library for Delphi
MPL-1.1.html可能涉及的是该库的许可证协议,例如可能是Modified Perl License 1.1,规定了库的使用、分发和修改条件。
PHP5 完整官方 中文教程
PHP5 完整官方 中文教程版权信息前言入门指引简介简明教程安装与配置安装前需要考虑的事项Unix 系统下的安装Mac OS X 系统下的安装Windows 系统下的安装PECL 扩展库安装还有问题?


