On Wed, Aug 21, 2013 at 12:43:58AM +0000, YAMAMOTO Takashi wrote: > > On Tue, Aug 20, 2013 at 03:31:01PM +0000, YAMAMOTO Takashi wrote: > >> > On Tue, Aug 20, 2013 at 09:31:18AM +0000, YAMAMOTO Takashi wrote: > >> >> > Module Name: src > >> >> > Committed By: joerg > >> >> > Date: Mon Aug 19 22:43:28 UTC 2013 > >> >> > > >> >> > Modified Files: > >> >> > src/lib/libc/citrus: citrus_lc_ctype.c > >> >> > src/lib/libc/gen: isctype.c > >> >> > src/lib/libc/locale: global_locale.c setlocale_local.h > >> >> > > >> >> > Log Message: > >> >> > Remove most LC_CTYPE specific parts of locale.cache. > >> >> > >> >> why? > >> > > >> > Unlike the locale parts, the cache is currently not invariant and also > >> > not updated atomically. I am working on fixing that. It is useful for > >> > run time memory usage to remove redundant fields and reduce the number > >> > of categories that affect the cache. > >> > >> for what purpose do you need atomic update? > > > > In a multi-threaded application, calling nl_langinfo or localeconv > > should provide consistent results. It doesn't do that ATM. > > - who updates them behind nl_langinfo/localeconv?
setlocale > - does looking at part_impl directly make them atomic? how? part_impl doesn't change after creation, so changes are visible at the point that part_impl is updated. This is the best that can be done without using explicit locking. It ensures that at least all data from the same category is consistent. Joerg