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