Perlでのプロセス排他について
Web等のマルチユーザ環境では、複数のユーザが同時に処理要求した場合、シーケンシャル番号の採番などで排他制御が必要になります。
元々マルチユーザ環境のLinux系では、色々とサポートされていますが、元々シングルユーザ環境のWindows系では、あまりサポートされていません。
以下にLinux系とWindows系の両方で動作するプロセス排他のサンプルを組んでみました。
何かの参考になれば幸いです。
use strict; use warnings; Lock_Process(); print "AAAAAAAAAAA\n"; sleep(10); print "BBBBBBBBBBB\n"; Unlock_Process(); sub Lock_Process { my $lock_flg; while (1) { $lock_flg = mkdir('lockdir', 0777); if ($lock_flg == 1) { last; } sleep(1); } } sub Unlock_Process { rmdir('lockdir'); }