scope(exit): exception safety article example incorrect?

BCS ao at pathlink.com
Tue Apr 3 15:18:38 PDT 2007


Reply to Tim,

> 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
> 

Good point, and I think you are correct, but I think the intent is still 
clear.





More information about the Digitalmars-d mailing list