Boost logo

Boost :

From: Kevlin Henney (kevlin_at_[hidden])
Date: 2001-07-20 14:35:20

> From: "Vesa Karvonen" <vesa.karvonen_at_[hidden]>
>From: "Kevlin Henney" <kevlin_at_[hidden]>
>> Have you considered using the name 'locker'? This is the one I tend to
>> use: a locker (the scoped locking object) locks (calls the member
>> function) a lock (the mutex).
>I'm not native English, but 'locker' sounds like the thing that you use for
>storing objects. ;-)

Quite correct, this is one of its meanings. Although it is worth
pointing out that "locker" has fewer meanings in English than either
"lock" or "guard" :->

However, the analogy is not lost with this alternative meaning: a locker
is an enclosed space that may be locked and unlocked ;-)

>Anyway, this and related idioms have many names such as:
>- 'guard' (

This naming convention is somewhat older than Andrei's stuff :-) You
will find it commonly used across much of the literature and in much

>- 'sentry' (standard IOS library, TCPL)

Not a bad name.

>- 'proxy' (GoF)

Simply inaccurate if the object does not support forwarding semantics

>- ...

Tantalising ;-)

>So, I would propose simply appending lock with one of the above names. For
>example 'lock_guard'.

This is certainly a better name than auto_lock -- there is not much that
is "auto" about a lock that exists for the duration of an object's
lifetime rather than a block scope, which seems to be a common use for
another well known "auto" type :-}

>Personally, I have been using a class template 'locked', which is basically a
>handle to a lockable or guarded object/resource.

The problem is that "locked" is a description of state, ie a query or
state flag name rather than an object that performs an action.


  Kevlin Henney phone: +44 117 942 2990
  mailto:kevlin_at_[hidden] mobile: +44 7801 073 508 fax: +44 870 052 2289
  Curbralan: Consultancy + Training + Development + Review

Boost list run by bdawes at, gregod at, cpdaniel at, john at