Linux の一部の関数は _r (例: gmtime_r ) によって「スレッドセーフ」とマークされていますが、ほとんどのシステムコールはマークされておらず、マンページにも記載されていません。私の質問は次のとおりです。Linux syscall がスレッドセーフかどうかをどのように確認できますか? ありがとうございました!
3641 次
1 に答える
7
「ライブラリ関数」のことだと思います。syscalls は、スレッドのカーネル側のデータを操作するため、スレッドセーフである必要があります。
答えは、問題の関数のマニュアル ページを確認することです。「_r」バリアントは、再入不可の関数専用に提供されています。つまり、それらに渡された追加のパラメーターは、静的に宣言され、非「_r」バージョンで変更されました。
ほとんどの glibc は、IIRC、スレッドセーフであるべきですが、常にマニュアルページをチェックする必要があります。または、それらを信頼しない場合は、コード自体。プログラミング対象のインターフェースを理解する責任を取り除く特効薬はありません。
于 2012-08-19T10:00:15.707 に答える