From: Anthony Williams (anthony_w.geo_at_[hidden])
Date: 2006-11-02 11:22:25
Doug Gregor <dgregor_at_[hidden]> writes:
> On Nov 2, 2006, at 10:09 AM, Anthony Williams wrote:
>> Your sample adaptor has given me the idea of not having an explicit
>> function, but rather overloads of try_lock:
>> bool try_lock(); // just try once
>> bool try_lock(unsigned spin_count); // spin this many times
>> bool try_lock(target_time_type target_time); // wait until the
>> specified time
>> bool try_lock(time_period_type wait_time); // wait for the
>> specified period
> Sorry, naive user just woke up and saw this fly by...
> Are there conversions from integral types to target_time_type and/or
> If so, I would be quite surprised if try_lock(1000) spun 1,000 times
> before failing, rather than 1,000 milliseconds (for instance).
I would expect time_period_type and target_time_type to have explicit
constructors. The usage I imagine is something like:
m.try_lock(milliseconds(1000)); // wait 1s
m.try_lock(seconds(1000); // wait 1000s
m.try_lock(date_time(2006,11,2,16,9,27)); // wait until 16:09:27 on 2nd November 2006
m.try_lock(1000); // spin 1000 times
I'm not averse to
m.try_lock(spin(1000)); // spin 1000 times
but I'm not sure it's necessary. Just specifying a plain number begs the
question "1000 what?", and the docs will make it clear that it's a spin count.
One waits 1000 times as long as the other. It's not obvious to the casual
observer what the time units are; you have to know your API.
-- Anthony Williams Software Developer Just Software Solutions Ltd http://www.justsoftwaresolutions.co.uk
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk