Я общий хэш, используя следующие:IPC :: Shareable обмена
my $glue = 'data';
my %options = (
create => 1,
exclusive => 0,
mode => 0644,
destroy => 0,
);
tie %hash1, 'IPC::Shareable', $glue, { %options };
% hash1 объявлен как указано выше, в одном файле Perl, но он вызывается несколькими приложениями, каждое приложение изменяет его собственный индекс хэш:
Application1 --> $hash1{app1}="alpha";
Application2 --> $hash1{app2}="betta";
...
при условии, что приложения могут или не могут работать одновременная установка, будет ли быть потеря данных, если Application1 и Application2 попытаться изменить хэш одновременно?
Я сделал следующее испытание .pl 'my $ value = $ ARGV [0]; my $ i; в то время как (1) { if ($ handle_mem -> shlock()) { print "Теперь он заблокирован для меня \ n"; $ memAAA {$ value} = $ i ++; $ handle_mem -> shunlock(); } else { print "$ i: общий ресурс заблокирован \ n"; } } ' У меня был файл, запущенный в нескольких экземплярах с разными значениями ARGV, и я не смог попасть в один случай условия« else », это правильно и система слишком быстро? или я что-то упускаю? – Diego
@ Дьего, да, это правильно. – ikegami