$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Alexander Terekhov (terekhov_at_[hidden])
Date: 2001-07-31 18:11:24
> Any way, the implementation is going to require some initialization
> code that needs to be run only once even if multiple threads access
> the data after it's initialized. POSIX uses pthread_once to do this,
> but there's no Win32 equivalent. Instead, Win32 programmers are
> expected to make use of DllMain to handle this sort of initialization
> and tear down stuff. There's obvious drawbacks to this approach and
> it's not portable in any event. So the question is, does
> Boost.Threads need once functions, and if so what sort of interface
> should we put on it?
how about some generic singleton template. ideally,
in thread-aware C++200x ;) it would be really great
to be able to write something like:
Singleton& Singleton::getInstance()
{
static synch Singleton singleton( .... );
return singleton;
}
(synchronized static locals)
regards,
alexander.
ps. a) linuxthreads has a portable impl. for pthread_once
using DCL with memory barriers macros;
b) pthreads-win32 uses DCL w/o memory barriers;
OK on win32 (IA32; in-order memory model);
not so sure with respect to IA64 windows
version (out-of-order native memory model)
c) completely portable version could
be implemented via DCL with ThreadLocals