这到底是为什么?perl semaphore

kangqi7000 kangqi7000 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
#!/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),用于线程间的通信和同步。

hongly168

Perl线程的发展历程与架构

首先,由于每个线程都有自己的解释器,线程间的资源共享需要通过共享变量等机制来实现,这可能带来一些同步和竞争条件的问题。首先,由于每个线程都有自己的解释器,线程间的资源共享需要通过共享变量等机制来实现,这可能带来一些同步和竞争条件的问题。Perl在其早期版本中并没有原生支持线程,但随着时间的推移,对于多线程编程的需求越来越大,Perl的线程功能也得到了改进和扩展。Perl在其早期版本中并没有原生支持线程,但随着时间的推移,对于多线程编程的需求越来越大,Perl的线程功能也得到了改进和扩展。

YtCompiler

Apache No space left on device的解决办法

例如:```# ipcs -s------ Semaphore Arrays --------key semid owner perms nsems0x00000000 19234816 nobody

weixin_38590567

Multi thread library for Delphi

MPL-1.1.html可能涉及的是该库的许可证协议,例如可能是Modified Perl License 1.1,规定了库的使用、分发和修改条件。

a07272

PHP5 完整官方 中文教程

PHP5 完整官方 中文教程版权信息前言入门指引简介简明教程安装与配置安装前需要考虑的事项Unix 系统下的安装Mac OS X 系统下的安装Windows 系统下的安装PECL 扩展库安装还有问题?

yjlnge
评论 5
收藏 已收藏
分享
返回顶部
kangqi7000
脚本语言 37,737 成员 34,208 内容