如何在避免竞争条件的同时读取/写入js中文件的确切位置

问题描述 投票:0回答:1

我正在将树实现为一个简单的数组(在数组的C意义上),它使用对数组索引的操作而不是指针。树会变得很大,我需要坚持下去。最简单的解决方案似乎是一个通用文件,数组的所有数据都串在一起。

要访问树的叶子,我需要以下内容:

  • 能够在文件中的随机位置读取/写入一系列32字节项。
  • 能够在执行读/写之前“锁定”文件,以便对树函数的其他异步调用将在树更新时等待(因为对树抽象的更新,需要对文件本身进行多次更新)。

我正在使用节点附带的fs模块来访问文件系统,但是调用open不会将其从其他线程锁定,我也没有看到任何关于它的文档。理想情况下,我不必仅阻止这一个文件,并且它不会产生显着的开销,因为我将对树进行数百万次读/写操作(这是对文件的百万次读/写操作) )。

javascript database semaphore
1个回答
0
投票

我用semephore解决了它。在操作系统级别上真的不需要发生任何事情。信号量只是将我的函数包含在semephore.take(myTrie.put())中,当多次调用时,它将包含的函数放入一个队列中,只调用前一个调用后的semephore.leave()(我在解析时调用)。

© www.soinside.com 2019 - 2024. All rights reserved.