libthr cleanup

David Xu davidxu at freebsd.org
Wed Mar 29 09:39:50 UTC 2006


Dag-Erling Smørgrav wrote:

> In effect, the wait / wake operations implement a condition variable.
> You should not use the same struct (or type) to describe the condition
> variable as the one you use to describe a mutex.
> 
> Condition variables are always used in conjunction with a mutex.  The
> mutex must be passed to the wait function so it can be unlocked while
> the waiting thread waits.  It must be held by the thread calling the
> wake method.  Neither the existing interface nor the one you propose
> do this.
> 
You are talking about how to use it, not how to implement it.


> You cannot "wait for an integer to be changed" (at least not without
> using hardware debugging facilities), and that is not what
> UMTX_OP_WAIT does.  It is a botched condition variable.  It waits for
> another thread to perform an UMTX_OP_WAKE operation with the correct
> arguments; the fact that an integer has changed is incidental, and the
> test for that change could be implemented in userland: look up
> condition variables in any good CS textbook and you will see an
> example of this, likely in the guise of a sample message queue (or
> mailbox) implementation.
> 

again, there are many ways to implement it, I think you are talking
about how to use it, not how to implement it.

> I can understand wanting to move the check into the kernel to avoid
> spurious context switches, but it has to be done right.
> 
> 
>>                                                           you
>>should check source code before talking a lot,
> 
> 
> That is precisely what I have done.
> 
> 
>>                                               saying that you doubt
>>the UMTX_OP_WAIT and UMTX_OP_WAKE's correctness is not professional,
>>there are users using libthr in daily work and stress testing had
>>been done.
>>I have put lots of work and time on libthr, I know the problems,
>>though the _umtx interface is a bit ulgly because it was unclear
>>when it was being designed, but I don't think it really hurt you or
>>other people, it can be fixed in few days, I just was hesitating to
>>add the new interfaces.
> 
> 
> The amount of work you have put into libthr and its importance to your
> self-esteem do not guarantee its correctness.  What is unprofessional
> here is 1) the quality of your code and 2) your refusal to consider
> that I might have a point.
> 
> DES
I don't trust you, I don't think your work is useful to me, you are
rushing, and command everyone to catch up with you, but we have life,
wife, and children, I am old, I should leave FreeBSD.


David Xu



More information about the freebsd-threads mailing list