Advertisement
Guest User

Untitled

a guest
Nov 15th, 2012
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
D 0.44 KB | None | 0 0
  1. import std.traits;
  2.  
  3. struct Lock
  4. {
  5.     static opCall ()
  6.     {
  7.         Lock l;
  8.         l.lock();
  9.  
  10.         return l;
  11.     }
  12.  
  13.     ~this ()
  14.     {
  15.         unlock();
  16.     }
  17.  
  18. private:
  19.  
  20.     void lock () {}
  21.     void unlock () {}
  22. }
  23.  
  24.  
  25. void lock (T) (T value, void delegate (Unqual!(T)) dg)
  26. {
  27.     auto l = Lock();
  28.     dg(castAwayShared(value));
  29. }
  30.  
  31. void main ()
  32. {
  33.     shared int i;
  34.     lock(i, (x) {
  35.         // operate on i
  36.     });
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement