4

fwrite&fcloseが同じファイル記述子に対して 2 つのスレッドから並行して呼び出されるとどうなりますか?

4

3 に答える 3

9

POSIX ではFILEアクセスがスレッドセーフである必要がありますfcloseが、 はファイルを閉じてポインターを無効にするため、方法がありません (つまり、単なる仕様上の問題ではなく、決して「修正」したりなくしたりすることができない根本的な API の問題です)。fclose別のスレッドが静止画にアクセスしている可能性がある場合に使用しFILEます。独自のロックを行う必要があります。

于 2010-09-10T16:14:47.823 に答える
4

fwriteデータ構造をfclose操作します。FILEこれは単なるファイル記述子以上のものを格納する大規模なデータ構造であるため、答えは悪いことです。

ミューテックスを使用してアトミック操作を保証しない限り、これを行わないでください。

于 2010-09-10T14:01:30.177 に答える
-4

このような状況では、メソッドの優先度を定義する必要があります。「同期」でメソッドを制御できます。

于 2010-09-10T14:05:04.647 に答える