Boost logo

Boost :

From: Howard Hinnant (hinnant_at_[hidden])
Date: 2006-11-01 17:26:25


On Nov 1, 2006, at 4:49 PM, Roland Schwarz wrote:

> I might miss the point. But the problem is not only how to emulate
> a recursive mutex, in case the operating system does not allow
> recursive locking, but how to expose these two kinds if they
> exist on the opsys API level. If they exist I'd rather use them,
> instead letting the library emulate. No?

Yes!

template <>
class recursive_mutex<native-type>
{
     native_type mut_;
public:
     void lock() {mut_.lock();} // or whatever straight drop through
to the OS
     ...
};

And yet you can still say recursive_mutex<upgradable_mutex> and get
the (more expensive) emulation.

This is just exactly how and why I want to template condition as well:

template <class Lock>
class condition
{
     ...
};

template <>
class condition<native-type>
{
     ... straight drop through to native-condition of native-mutex
};

-Howard


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