複数スレッドからファイルアクセスする場合の、適切なロック方法
C言語で複数スレッドからファイルアクセスする場合、ロックする関数についてご教示ください。
下記のようなプログラムを作成しています。
・スレッド(1)は、ファイルに対してライトします。
・スレッド(2)は、スレッド(1)によってライトされたファイルに対してリードします。
・必ずしもスレッド(1)(2)は同じファイルにアクセスするわけではなく、スレッドごとにfopen()します。
・タイミングによってスレッド(1)(2)は同じファイルにアクセスします。
・(不測の自体でロックをとったままスレッドが落ちてしまった場合、他方のスレッド側ロックを強制解除して処理は継続させたいです(別途エラーメッセージはログに出力します)。
flock(fd,LOCK_EX)をつかってロックを取る方針で検討していたのですが、
「flock()はファイル記述子ごとにロックするので、
fopen()を別々に行っていては正しくロックできないのでは?」
との指摘を受けて、ロックのとり方を再検討している最中です。