[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] libports: implement lockless management of threads
From: |
Samuel Thibault |
Subject: |
Re: [PATCH] libports: implement lockless management of threads |
Date: |
Tue, 12 Nov 2013 20:13:58 +0100 |
User-agent: |
Mutt/1.5.21+34 (58baf7c9f32f) (2010-12-30) |
Hello,
OK, I believe that'll work indeed. What really makes it work is this:
Justus Winter, le Mon 11 Nov 2013 21:12:34 +0100, a écrit :
> + /* Decrement nreqthreads. */
> + unsigned int tc = __atomic_sub_fetch (&thread_counts, 1,
> + __ATOMIC_RELAXED);
> + if (NREQTHREADS (tc) == 0)
You have atomicity between the decrementation and testing whether the
resulting value is 0. That's why we were keeping the spinlock along the
test. The same happens with the test on totalthreads below.
Now, there is no need for the two counters to be updated coherently,
they are used for different reasons, and don't actually interfere. Also,
mixing them into one int reduces the maximum number of threads to 65535,
which is not so big.
So I'd say please move to using two unsigned ints. Yes, it means
two atomic operations on thread creation/destruction, but that's an
expensive operation already anyway (and we're not supposed to do that so
often). Readability of the code is more important than that :)
Samuel
- [PATCH] libports: fix the thread counts in case the thread creation fails, Justus Winter, 2013/11/09
- Re: [PATCH] libports: fix the thread counts in case the thread creation fails, Samuel Thibault, 2013/11/09
- Re: [PATCH] libports: fix the thread counts in case the thread creation fails, Neal H. Walfield, 2013/11/10
- Re: [PATCH] libports: fix the thread counts in case the thread creation fails, Samuel Thibault, 2013/11/10
- Re: [PATCH] libports: fix the thread counts in case the thread creation fails, Neal H. Walfield, 2013/11/10
- lockless thread management in libports (was: [PATCH] libports: fix the thread counts in case the thread creation fails), Justus Winter, 2013/11/11
- [PATCH] libports: implement lockless management of threads, Justus Winter, 2013/11/11
- Re: [PATCH] libports: implement lockless management of threads, Neal H. Walfield, 2013/11/11
- Re: [PATCH] libports: implement lockless management of threads, Justus Winter, 2013/11/12
- Re: [PATCH] libports: implement lockless management of threads,
Samuel Thibault <=
- Re: [PATCH] libports: implement lockless management of threads, Emilio Pozuelo Monfort, 2013/11/13
- Re: [PATCH] libports: implement lockless management of threads, Justus Winter, 2013/11/15
- [PATCH] libports: implement lockless management of threads, Justus Winter, 2013/11/15
- Re: [PATCH] libports: implement lockless management of threads, Samuel Thibault, 2013/11/16
- Re: [PATCH] libports: implement lockless management of threads, Justus Winter, 2013/11/16
- Re: [PATCH] libports: implement lockless management of threads, Richard Braun, 2013/11/16