Marcin Dalecki <[EMAIL PROTECTED]> writes: | On 2005-04-15, at 01:10, Richard Henderson wrote: | | > On Thu, Apr 14, 2005 at 11:30:20PM +0200, Jason Merrill wrote: | >> Consider Double-Checked Locking | >> (http://www.cs.umd.edu/~pugh/java/memoryModel/ | >> DoubleCheckedLocking.html). | >> I used DCL with explicit memory barriers to implement thread-safe | >> initialization of function-local statics | >> (libstdc++-v3/libsupc++/guard.cc). The proposed change to volatile | >> semantics would allow me to write it more simply, by just making the | >> initialized flag volatile. Yes, volatile would be stronger than is | >> actually necessary for DCLP, but I don't have to use it if I want | >> finer-grained control over the synchronization. | > | > Is there any reason to want to overload volatile for this, rather than | > | > template<classname T> T acquire(T *ptr); | > template<classname T> void release(T *ptr, T val); | > | > where the functions do the indirection plus the memory ordering? | | Templates are a no-go for a well known and well defined subset for C++ | for embedded programming known commonly as well embedded C++.
You'd be surprised to learn that embedded systems people do use templates for various things -- among which, maybe the most "paradoxical" is to avoid code bloat. Embedded C++ was a mistake, alas a mistake that seems to last. -- Gaby