我正在将树实现为一个简单的数组(在数组的C意义上),它使用对数组索引的操作而不是指针。树会变得很大,我需要坚持下去。最简单的解决方案似乎是一个通用文件,数组的所有数据都串在一起。
要访问树的叶子,我需要以下内容:
我正在使用节点附带的fs
模块来访问文件系统,但是调用open
不会将其从其他线程锁定,我也没有看到任何关于它的文档。理想情况下,我不必仅阻止这一个文件,并且它不会产生显着的开销,因为我将对树进行数百万次读/写操作(这是对文件的百万次读/写操作) )。
我用semephore
解决了它。在操作系统级别上真的不需要发生任何事情。信号量只是将我的函数包含在semephore.take(myTrie.put())
中,当多次调用时,它将包含的函数放入一个队列中,只调用前一个调用后的semephore.leave()
(我在解析时调用)。