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

Reply via email to