揮発性のメモ2

http://d.hatena.ne.jp/iww/

printfはスレッドセーフ

printf(3)C99にだいたい準拠している。
Man page of PRINTF

fprintf(), printf(), sprintf(), vprintf(), vfprintf(), vsprintf() 関数は、C89 と C99 に準拠している。 snprintf() と vsnprintf() は C99 に準拠している。

C99IEEE Std 1003.1-2001にだいたい準拠している。
http://www.jp.freebsd.org/cgi/mroff.cgi?sect=1&subdir=man&lc=1&cmd=&dir=jpman-6.4.2/man&man=c99

c99 ユーティリティインタフェースは IEEE Std 1003.1-2001 ("POSIX.1") に適合しています。これは GCC を包むものですので、GCC が実際に実装している C99 機能に限定されています。

IEEE Std 1003.1-2001の関数は一部を除いてスレッドセーフである。
System Interfaces Chapter 2

2.9.1 Thread-Safety

All functions defined by this volume of IEEE Std 1003.1-2001 shall be thread-safe, except that the following functions need not be thread-safe.

よって、printfはだいたいスレッドセーフである。ほんとかなぁ


スレッドセーフな関数とシグナルハンドラで使っていい関数とが頭ん中でごちゃごちゃになることが多いので気をつける。