回答編集履歴
1
前提の勘違いがあったため修正
answer
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
|
1
|
+
もし POSIX環境 ( pthread ) を使っていれば、fprintf もスレッドセーフのはずで、1回1回の呼び出しの内容(この場合は「行」)が混ざるということはないはずです。
|
2
|
-
|
2
|
+
が、ソースからは「何のマルチスレッド環境なのか」分からないので、なんとも言えません。
|
3
3
|
|
4
|
-
どういう意味での「ぐちゃぐちゃ」か明記してください。
|
4
|
+
環境および、どういう意味での「ぐちゃぐちゃ」か明記してください。
|
5
5
|
|
6
|
-
なお、複数の出力をまとめたい ( 例えば fprintf 3回の呼び出しの間に割り込まれたくない ) ということであれば、stdio には flockfile, funlockfile という、ストリーム毎の排他制御が用意されています。
|
6
|
+
なお、POSIXの場合、複数の出力をまとめたい ( 例えば fprintf 3回の呼び出しの間に割り込まれたくない ) ということであれば、stdio には flockfile, funlockfile という、ストリーム毎の排他制御が用意されています。
|
7
7
|
※使わなくても、1回1回の呼び出しは混ざらない
|
8
8
|
|
9
9
|
他のリソースもまとめて排他制御するなら pthread_mutex系の関数を使うのも良いと思いますが、I/Oだけの話ならこれで十分かと思います。
|