尝试在 Linux 中为另一个必须是多线程的文件系统实现类似于 move 命令的命令时,我遇到了以下问题。
当我尝试执行以下操作时:'''mv /a /b/a''' 程序正在锁定根目录以进行写入和 a 以进行写入。然后,由于我无法释放锁,因为其他线程可能会获取它们,所以当我尝试锁定根以读取移动命令的目标时,我会陷入死锁情况。
我正在努力解决这个问题的可能解决方案。以我的代码现在的方式,当给定路径 /x/y/z 时,它会锁定每个目录,用于读取或写入,具体取决于我要执行的命令。因此,使用它,我能够确定是否可以将 /a 写入 /b/a,因为它会检查 /a 是否存在以及 /b/a 是否不存在,但我仍然需要解决死锁情况.