__libc_single_threaded design

Florian Weimer fweimer@redhat.com
Mon Oct 7 19:49:00 GMT 2019


* Ondrej Bilka:

>> __libc_single_threaded can be implemented such that
>> its value only changes when the application is
>> single threaded, which means normal non-atomic read
>> access is valid, it can be a plain _Bool or int
>> and it's 100% reliable when the read value is 1.
>>
>> a thread count variable can change asynchronously
>> so users need atomic access, possibly requiring
>> libatomic to get linked in even if it's only used
>> for single-thread check, and if the value is >1
>> the meaning is unclear since it can change async.
>
> Then better way is to introduce bool if thread was created to fix 
> design mistake there.

The flag is called __libc_single_threaded (now:
pthread_single_threaded_np_ to convey that if it is true, the process is
definitely single-threaded.  If it false, it might be multi-threaded, or
we just might not know (as in a secondary namespace, or after static
dlopen).

Thanks,
Florian



More information about the Libc-alpha mailing list