2009-11-10 1 views

答えて

17

ヒープを使用していない理由は、標準(POSIX)と他のシステムに準拠するためです。インタフェースは、返されたバッファを解放するはずのものではありません。

しかし、スレッドローカル(__thread)と宣言することによって、2つのスレッドが両方とも関数を呼び出す場合、2つのスレッドは互いに競合しません。これはglibcのインタフェースの破損に対する回避策です。

これはリエントラントではなく、その用語の精神と一致していることは間違いありません。あなたがそれを呼び出す再帰的な関数を持っているならば、呼び出しの間に同じであるバッファに頼ることはできません。しかし、それは複数のスレッドで使用することができます。これはしばしば十分です。

編集:ところで、私はちょうど思い出しましたが、この関数の新しいバージョンでは、呼び出し元提供のバッファを使用しています。 inet_ntop()を参照してください。

+0

@asveikau:申し訳ありませんが、印刷エラーです。 – Jichao

+0

@asveikau:結論として、その互換性については? – Jichao

+0

@jcyangはい、互換性のためです。 – asveikau

関連する問題