質問
Solarisで、dbxを実行中のスタックの1つに接続したとき、__lll_lock_wait()につながるfwriteへの呼び出しが見つかりましたか?
これはどのシナリオで起こりますか? FWRITEは内部的にロックを取得しようとしますか?
解決
私が見た基準(C99とPOSIX)は、ロックされたまたはロック解除されたIOに関して何も言わないことをしています fwrite
.
私のLinuxシステムでは、彼らはロックすることについてそれほど正確ではありません man
ページ:
For non-locking counterparts, see unlocked_stdio(3).
そして事実上、aがあります fwrite_unlocked
働き。 POSIXの標準のロック解除機能のみです getc_unlocked()
, getchar_unlocked()
, putc_unlocked()
, 、 と putchar_unlocked()
.
私の解釈では、おそらく男性(3)セットのすべてのバッファリングされたIOがロックされており、ロック解除されたIOを実行するための標準化されたインターフェイスはごくわずかしかないということです。
これらのものがスレッド間でロックされていることは本当に良いことです。 stderr
, 、例:
所属していません StackOverflow