File 如何在Raku实现文件锁定?

File 如何在Raku实现文件锁定?,file,locking,raku,File,Locking,Raku,我一直在想如何在Raku中进行文件锁定,但没有成功。我开始用NativeCall研究fcntl,但后来意识到fcntl锁不会阻止其他线程访问文件。在Raku中执行文件锁定的最佳方法是什么?IO::Handle有一个和一个锁定/解锁文件的方法。锁可以是独占的,也可以是共享的。我遇到过这些Raku惯用短语,并经常使用它们,为了简洁/清晰,将“给定”主题化: 阅读: 写: given $path.IO.open(:w) { .lock; .spurt: to-j

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

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

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

阅读:

写:

    given $path.IO.open(:w) {
        .lock;
        .spurt: to-json(%data);
        .close;
    }

也许IO锁方法正是您想要的:这很尴尬。我到处看了看,没有看到。谢谢@ValleLukas!如果中间行抛出异常,这不会解锁,休假阶段可能有助于确保
    given $path.IO.open(:w) {
        .lock;
        .spurt: to-json(%data);
        .close;
    }