リエントラント版である
putcマクロは,複数スレッドからの同時呼び出しに対してロックされます。その結果,ストリームの一貫性を保証するためのオーバヘッドが生じます。アンロック版である
putc_unlockedを使用すると,このオーバヘッドを避けることができます。
putc_unlockedマクロは
putcマクロと機能的に同じですが,スレッド・セーフな方法で実装する必要がない点が異なります。
putc_unlockedマクロは,
flockfile関数と
funlockfile関数を対で使用して保護された範囲内でだけ,安全に使用することができます。呼び出し元は,
putc_unlockedを使用する前に,ストリームを確実にロックする必要があります。
putc_unlockedはマクロであるため,副作用のあるファイル・ポインタ引数は正しく評価されないことがあります。このような場合は,代わりに
fputc_unlocked関数を使用してください。
__UNIX_PUTC マクロを定義してコンパイルすれば,この関数の高速インライン版を使用して,最適化できます。
flockfile,
ftrylockfile,および
funlockfileも参照してください。