Boost logo

Boost :

From: Johan Nilsson (r.johan.nilsson_at_[hidden])
Date: 2007-03-26 03:35:04


Yuval Ronen wrote:
> Peter Dimov wrote:
>> Howard Hinnant wrote:
>>
>>> N2184 takes the minimalist approach. It is easier to add
>>> functionality (and the associated expense) than to subtract it.
>>> There are many things the N2184::thread does not directly support.
>>> I believe this is a feature, not a bug.
>>
>> This is true under the assumption that we need to target the least
>> common denominator. Try/timed joins for example come for free on
>> Windows. So you are imposing an unnecessary mutex+cv overhead for
>> everyone wanting to use try/timed joins there.
>>
>> I've decided to adopt a different approach and suggest a way to
>> equalize ('harmonise' in EU terms :-) ) the platforms via the join2
>> extensions. In a perfect world, this would lead to everyone enjoying
>> _zero overhead_ try/timed joins in a few years once pthread
>> implementors adopt the extensions.
>>
>> Yes, I agree that this can be considered idealistic; but the other
>> option is to not even give them a chance to offer the functionality
>> as there would be no portable C++ way to take advantage of it.
>
> I'm far from being an expert on the Windows internals, but maybe what
> seems to "zero overhead" try/timed join is not really zero overhead,
> and
> the overhead is there, just hidden somewhere inside. If that's the
> case,
> then the "idealistic" way to go is to get Windows to supply a true
> zero overhead join.

Basically you're just waiting for a thread handle to become signalled, much
as waiting for an event, mutex or whatever. No more overhead than that,
AFAIK.

/ Johan


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk