The problem is that after the lock is released, we cannot respect the timeout because we must re-acquire the lock before returning.
Three possible solutions: * drop the function * change the semantics so that the lock is not re-acquired before the function returns * specify that the re-acquiring of the lock has this problem and the function cannot be used reliably (although it is still useful in most cases.)
POSIX threads has the third behaviour. The second is not the right thing(R), but I see uses for it.
Comments, please.
Cheers,
Marco