Bruno Haible <[EMAIL PROTECTED]> writes:

> Some multithread-safe libraries need not only locking, but also per-thread
> storage. I propose to add this module that provides TLS.

That sounds like a nice thing to add.  Thanks.  One quibble:

> # define gl_tls_key_init(NAME, DESTRUCTOR) \
>     if (pthread_in_use ())                                     \
>       {                                                        \
>         if (pthread_key_create (&(NAME).key, DESTRUCTOR) != 0) \
>           abort ();                                            \
>       }                                                        \
>     else                                                       \
>       (NAME).singlethread_value = NULL

This sort of macro will cause warnings with GCC and other compilers
if you use it in a context like this:

   if (foo)
     gl_tls_key_init (name, destructor);

because the compiler will warn about possible if-then-else nesting
problems.  The usual do { ... } while (0) construct avoids this
problem.


_______________________________________________
bug-gnulib mailing list
bug-gnulib@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-gnulib

Reply via email to