くだらねえ質問はここ ..
[2ch|▼Menu]
922:login:Penguin
08/07/25 13:35:09 VHMpv0v7

二つのプロセスが、早い者勝ちであるファイルを作っている。
二つのgccが早い者勝ちで同じ a.out を作っている、とかね。

この場合なんだけど、
このファイル更新処理をアトミックでやる最善の方法は?
何が言いたいかというと、プロセスAがもう出力を始めたのに、
プロセスBがそれを上書きするような事態は避けたい。

たとえば、同じパスにa.out.$pid とかを作って、
それを rename(2) する、という方法だと、
別プロセスの方が先にファイルを作っていても、それを上書きしちゃう。

いまは、ファイル出力前に、a.out を touch して、
その有無をある種のLock Fileの様につかい、
あとは普通に a.out.$pid から rename してるんだけど、
これだと、
touch した直後にプロセスがコケるとデッドロックしちゃうし、
なにより、二つに処理を分けるのがカッコわるい。

一撃でアトミックにやる方法は?




次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5360日前に更新/272 KB
担当:undef