如何在perl中使用IPC :: Shareable时检查其他人是否持有锁。 我有下面的代码:检查IPC可共享锁
my $resource = 0;
my $resource_handle = tie $resource, 'IPC::Shareable', undef , { destroy => 1 };
my $child = fork;
unless ($child) {
$resource_handle -> shlock();
sleep 10;
$resource_handle -> shunlock();
exit(0);
}
sleep 2;
if ($resource_handle -> shlock(LOCK_EX)) {
print "Got lock in parent\n";
$resource_handle -> shunlock();
} else {
print "The shared resource is locked\n";
}
这版画“了锁父” 10秒后,而我希望它打印出“共享资源被锁定”。
你可以请多解释一下。这确实奏效。 “LOCK_EX | LOCK_NB”与“LOCK_EX”的区别是什么? – Vivek
“LOCK_NB”是“非阻塞”。如果锁不可用,锁定调用立即返回false。如果没有这个,锁定调用“阻止” - 等到锁定可用时再返回。 – mob