scope(exit): exception safety article example incorrect?

Lionello Lunesu lio at lunesu.remove.com
Wed Apr 4 22:41:50 PDT 2007


Tim Keating wrote:
> The article on exception safety 
> (http://www.digitalmars.com/d/exception-safe.html) uses this example:
> 
> void abc()
> {
>     Mutex m = new Mutex;
> 
>     lock(m);    // lock the mutex
>     scope(exit) unlock(m);    // unlock on leaving the scope
> 
>     foo();    // do processing
> }
> 
> However, it seems to me this won't actually work as written. Doesn't any 
> variable used for scoping need to be declared either static or outside 
> the scope it's protecting? As written, it looks to me as though a new 
> local m will be created on the stack each time a thread enters this 
> func, which won't protect anything!
> 
> TimK

On win32, it could be a named mutex, with the name hardcoded :P

L.



More information about the Digitalmars-d mailing list