このような場合は、ファイルを1回だけ開くのが通例ですか?ファイルを開いたままにしておくか、頻繁に開閉する必要がありますか?
#!/usr/bin/env perl
use warnings;
use 5.012;
use autodie;
my $file = 'my_file';
open my $fh, '>>', $file;
say $fh "Begin";
close $fh;
$SIG{INT} = sub {
open my $fh, '>>', $file;
say $fh "End";
close $fh;
exit
};
my $result;
while (1) {
$result++;
# ...
# ...
# ...
open my $fh, '>>', $file;
say $fh $result;
close $fh;
sleep 3;
}
また、すべての開閉に関して遭遇するオーバーヘッドはどれくらいありますか?コストのかからない操作です。 –
私は自分のレスポンスに同時性とロックの考慮事項を含めることを考えましたが、彼の質問にはあまりにも絡み合っていると判断しました。しかし、彼はロック/フラッシングと開閉を組み合わせている可能性があります。ロックアウトを使用する必要があり、ロック競合やファイル/バッファの不一致のリスクを最小限にするために、書き込み操作後に明示的にフラッシュする必要があります。 –
@ S.Lott - それは一般的な "無駄なシステムリソース"の見出しですが、少し拡大していきます:) – DVK