duplocale
—
duplicate an locale
Standard C Library (libc, -lc)
#include <locale.h>
locale_t
duplocale
(locale_t
locale);
Duplicates an existing locale_t returning a new
locale_t that refers to the same locale values but has
an independent internal state. Various functions, such as
mblen(3)
require a persistent state. These functions formerly used static variables and
calls to them from multiple threads had undefined behavior. They now use
fields in the locale_t associated with the current
thread by
uselocale(3).
These calls are therefore only thread safe on threads with a unique per-thread
locale. The locale returned by this call must be freed with
freelocale(3).
This function conforms to IEEE Std 1003.1-2008
(“POSIX.1”).
Ideally,
uselocale(3)
should make a copy of the locale_t implicitly to ensure
thread safety, and a copy of the global locale should be installed lazily on
each thread. The FreeBSD implementation does not do this, for compatibility
with Darwin.