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