对于工作线程来说,执行以下操作是不好的做法:
lock(resource_a);
lock(resource_b);
release(resource_a);
release(resource_b);
如果是这样,为什么?我总是按照相反的顺序进行练习(层次结构),如下所示:
lock(resource_a);
lock(resource_b);
release(resource_b);
release(resource_a);
但我无法理解为什么我需要这样做,如果这条规则是理性的话。
我的特定上下文是在Windows中使用CRITICAL_SECTION
个对象,但该问题适用于任何资源同步。