On 1/22/07, Sohail Somani <s.somani@fincad.com> wrote:

Hi,

Perhaps the path-of-least-debugging is to use boost::once?


It definitely is.  But if you could find a way to make it better, even with complicated and platform-dependent code, and then wrap it up into something usable, have it tested and peer-reviewed, and placed somewhere we could all use it, it would still be useful.

Note that in the sentences above, I intentionally avoided mentioning anything about the particular problem, as it is a general truth - library code is allowed (at least somewhat) to be more complicated, if you assume it is going to be more used and more reviewed and more tested.


Sohail


P.S. In this particular case, I don't think you can get better than:
- a read barrier and if-branch in the already-initted case
- that + a write barrier in the init case
- all wrapped into a single int.

which is slightly, but not much better than a mutex.  It is also slightly better than most implementations of boost::once/pthread_once, and much better than some, depending on platform.

Tony