No, you can't, and no they don't.
lock(lk_var) {
lock(lk_var2) {
var = var2;
}
}
That expands to: for(int i=0; (i < 1) && !lk_lock(lk_var); lk_unlock(lk_var), i++)
{
for(int i=0; (i < 1) && !lk_lock(lk_var2); lk_unlock(lk_var2), i++)
{
var = var2;
}
}
You end up with an i scoped inside another i.