加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl 中常用的文件锁实例

发布时间:2020-12-16 00:38:47 所属栏目:大数据 来源:网络整理
导读:这种方法具体实现是创建和删除一个特定名称的文件,这在资源共享机制中通常称作semaphore。下面是个例子: 01: While(-f counter.lock){02:?? select(undef,undef,0.1);}03: open(LOCKFILE,"counter.lock);04: dbmopen(%COUNTERS,$DOCUMENT_ROOT/DBM_FILES/c

这种方法具体实现是创建和删除一个特定名称的文件,这在资源共享机制中通常称作semaphore。下面是个例子:

01: While(-f counter.lock){02:?? select(undef,undef,0.1);}03: open(LOCKFILE,">counter.lock);04: dbmopen(%COUNTERS,$DOCUMENT_ROOT/DBM_FILES/counters,0666);05: if(!(defined($counters{'my_counter'})){06:?? $counters{'my_counter'}=0;}07: $counters{'my_counter'})++;08: $count=$counters{'my_counter'};09: dbmclose (counters);10: close(LOCKFILE);11: unlink(counter.lock);???? 首先检查锁定标志文件是否存在,如果存在,就说明另一个进程正在使用该文件,于是等待直到该文件(此处命名为counter.lock)不存在为止。此处用select()的特殊形式循环等待,此语句使程序进入休眠状态一段时间,该时间段由最后一个参数定义。之所以不用sleep()函数是因为其基本单位为秒,对这种文件锁定而言太长了,几个微秒就足够了。??? 当锁定标志文件不再存在,就创建自己的锁定标志文件并开始修改计数,完成后关闭该文件并用unlink函数将之删除,这样其它的进程又被允许修改计数。锁定标志文件并不是特殊的文件,其文件名也可以由你自己随意选择。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读