Boost logo

Boost :

From: Peter Dimov (pdimov_at_[hidden])
Date: 2007-08-25 21:10:01


I've thought a bit more about the various options that a vendor has with
regards to sizeof mutex, condition, and shared_mutex (*), and this has
indirectly made me realize why I feel uncomfortable with the native_handle
accessor.

It can't be used in portable code. At the same time, its presence puts
pressure on you as an implementor to make std::mutex be a pthread_mutex_t
(or a pointer to a pthread_mutex_t) since the OS is POSIX-compliant. This
removes some of your implementation options; even if you don't find the
underlying pthread_mutex_t particularly lean or well-performing, you'll be
reluctant to replace it with an alternative.

On Windows, some vendors will choose HANDLE and some - CRITICAL_SECTION* as
the native handle, so it's not portable even across implementations on the
same platform.

In N2178, I've proposed pthread_mutex_t as part of the package, so while a
"native handle" accessor would have the same disadvantage of tying
std::mutex to pthread_mutex_t, it would've had the advantage of being
portable.

(*)

mutex: 4, 8, 16, 44
condition: 4, 28, 32
shared_mutex: 4, 8, sizeof(pthread_rwlock_t), 104

are some of the options that come to mind, using the previously posted sizes
as an arbitrary baseline.


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