These are great for asserts, but I would be careful using them to control flow.  Usually if we get into a block of code and aren't sure what locks we are holding there are other problems.  IMO local variables to keep track is  safer (tho a bit more tedious)