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,
> the overhead is there, just hidden somewhere inside. If that's the
> 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,
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk