Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 29 Mar 2006 17:39:55 +0800
From:      David Xu <davidxu@freebsd.org>
To:        =?ISO-8859-1?Q?Dag-Erling_Sm=F8rgrav?= <des@des.no>
Cc:        threads@freebsd.org, jeff@freebsd.org
Subject:   Re: libthr cleanup
Message-ID:  <442A55EB.9060009@freebsd.org>
In-Reply-To: <861wwlehvg.fsf@xps.des.no>
References:  <86slp1u4qb.fsf@xps.des.no> <442A466A.9040506@freebsd.org> <861wwlehvg.fsf@xps.des.no>

next in thread | previous in thread | raw e-mail | index | archive | help
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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?442A55EB.9060009>