EN JA
DUPLOCALE(3)
DUPLOCALE(3) FreeBSD Library Functions Manual DUPLOCALE(3)

名称

duplocaleロケールを複製する

ライブラリ

Standard C Library (libc, -lc)

書式

#include < xlocale.h>

locale_t
duplocale( locale_t locale);

解説

同じロケール値を参照するけれども独立した内部状態がある、新しい locale_t を返す既存の locale_t を複製します。 mblen(3) のような様々な関数は、永続的な状態を要求します。これらの関数は、以前は、静的変数を使用し、複数のスレッドからそれらへの呼び出しは、未定義の振る舞いとなります。それらは、現在、 uselocale(3) によって現在のスレッドに関連した locale_t のフィールドを使用します。したがって、これらの呼び出しは、ユニークなスレッドごとのロケールがあるスレッドでのみスレッドセーフです。

この呼び出しによって返されるロケールは、 freelocale(3) で解放されなければなりません。

規格

この関数は、 IEEE Std 1003.1-2008 (“POSIX.1”) に適合しています。

バグ

理想としては、 uselocale(3) は、スレッドセーフを保証するために暗黙のうちに locale_t のコピーを行うべきで、各スレッドでグローバルなロケールのコピーは、ゆっくりインストールされるべきです。 FreeBSD の実装は、Darwin との互換性のために、これを行いません。
September 17, 2011 FreeBSD