C++ では、次のシナリオでファイルへの書き込みをスレッドセーフにする方法はありますか?
void foo_one(){
lock(mutex1);
//open file abc.txt
//write into file
//close file
unlock(mutex1);
}
void foo_two(){
lock(mutex2);
//open file abc.txt
//write into file
//close file
unlock(mutex2);
}
私のアプリケーション (マルチスレッド) では、foo_one() と foo_two() が 2 つの異なるスレッドによって同時に実行される可能性があります。上記のスレッドセーフにする方法はありますか?
ファイルロック( fcntl および/または lockf )の使用を検討しましたが、アプリケーションで fopen() が使用されているため(パフォーマンス上の理由)、それらのファイルロックを使用すべきではないことがどこかに記載されているため、それらの使用方法がわかりませんfopen を使用 (バッファリングされているため)
PS : 関数 foo_one() と foo_two() は 2 つの異なるクラスにあり、それらの間でデータを共有する方法はありません :( 。悲しいことに、1 つの関数が他の関数を呼び出すことができないように設計されています。