如何在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