11

我一直在试图弄清楚如何在 Raku 中进行文件锁定,但没有成功。我开始使用 NativeCall 研究 fcntl,但后来意识到 fcntl 锁不会阻止其他线程的文件访问。在 Raku 中进行文件锁定的最佳方法是什么?

4

2 回答 2

12

IO::Handle 有一个lock和一个unlock方法来锁定/解锁文件。锁可以是独占的或共享的。

于 2020-12-28T21:30:09.183 回答
1

我遇到了这些 Raku 惯用短语并经常使用它们,为了简洁/清晰起见,“给定”主题化:

读:

    given $path.IO.open {
        .lock: :shared;
        %data = from-json(.slurp);
        .close;
    }

写:

    given $path.IO.open(:w) {
        .lock;
        .spurt: to-json(%data);
        .close;
    }
于 2021-01-11T20:17:20.527 回答