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

Reply via email to