读写文件时,对文件加锁的问题

读写文件时,对文件加锁的问题

读写文件时,对文件加锁的问题
这是我的整个程序,也可以正常运行
#!d:/perl/bin/perl.exe -wT
use strict;
use CGI qw(:all);
use Fcntl qw(:flock);

my $gbdata="d:/Apache2.2/www/cgi-bin/a.txt";

my $seamphore_file="helpdesk.sem";

sub get_lock{
     open(SEM,">$seamphore_file")|| die "cannot create seamphore:$!";
     flock SEM,LOCK_EX;
}

sub release_lock{
     close(SEM);
}
sub save{     
     get_lock();
     open(GB,">>$gbdata")|| die"cannot open $gbdata:$!";
     print GB "name:",param('name'),"\n";
     print GB "type:",param('probtype'),"\n";
     print GB "problem:",param('problem'),"\n";
     close(GB);
     release_lock();
}

sub display{
     open(GB,$gbdata)|| die" cannot open $gbdata:$!";
     while(<GB>){
          print "<b>$_</b><p>";
          my($type,$prob);
          $type=<GB>;
          $prob=<GB>;
          print "$type<p>";
          print "$prob<br><hr>";

     }
     close(GB);
}
print header;
if(defined param('submit')){
     save;
     display;

}else{
     display;
}
但是我不明白 my $seamphore_file="helpdesk.sem";
这个变量和我要读的文件的关系,为什么要对这个变量进行锁定呀 不明白 请帮我解释解释
[CCB]10[/CCB].
其实这里的加锁不是针对$g.
其实这里的加锁不是针对$gbdata,而是对 helpdesk.sem进行的
如果helpdesk.sem是被锁定状态,当执行到get_lock();就会提示文件有冲突,这就避免对$gbdata读写操作,
也就是$seamphore的作用就是一个布尔标示,标示现在是否可读写文件
谢谢你 明白了