Am Mon, 03 Feb 2014 10:33:11 -0800 schrieb Brad Roberts <[email protected]>:
> I have one semi-large code base where I validate the locking semantics > by adding assert(!lock.try_acquire)'s. That's clearly a side effect, > but also clearly should never have one if the code is correct. Damn those gotchas. Basically lock.try_acquire is pure when it returns false, and if not, the program is terminated anyways so it doesn't make a difference. I also noticed that contracts don't work at all with shared objects. Where you synchronize around a mutex inside a method you have to move all checks into the critical section. Yeah, its obvious, but when you turn a non-thread-safe structure into a thread-safe one and have to delete all in-out-blocks it hurts a bit. :) -- Marco
