我正在尝试创建二进制存储。文件一旦添加,就无法删除。所有文件都存储在同一主文件(storage.bin)中。我将有一个表索引与成对(键,startFilePos,fileLength)。
在开始编码之前,我正在努力寻找最佳解决方案。由于我不熟悉.net下的流,我想对它们提出一些建议。
是多个流到同一个文件(storage.bin)的解决方案? 由于文件可以并行添加,一旦我开始接收文件,i 为它保留磁盘空间并开始编写特定的空间 将文件添加到保留块,同时添加其他相同方案文件 在其他线程上。
如果(1)是可行的解决方案,它是最佳解决方案吗?如果没有,可以 你指的是一个更好的?
为每个文件添加方案分配线程的最佳方法是什么?似乎1个线程/ 1流不是可行的解决方案。我想的是拥有一个线程池,如果达到了限制,就有一个新文件等待一个可用。
答案 0 :(得分:1)
- 是多个流到同一个文件(storage.bin)的解决方案?由于文件可以并行添加,一旦我开始接收文件,i 为它保留磁盘空间并开始编写该特定文件 添加其他相同方案文件时保留块 其他主题。
醇>
是的,这可能是一个解决方案。只要不同的流写入文件的不同非重叠段,就不会有问题。
- 如果(1)是可行的解决方案,它是最佳解决方案吗?如果没有,你能指出一个更好的吗?
醇>
使用单独的文件并将索引保留在主文件中。
- 为每个文件添加方案分配线程的最佳方法是什么?似乎1线程/ 1流不是可行的解决方案。 我想的是有一个线程池,如果有限制 达到了,有一个新文件等待一个可用
醇>
您刚刚描述了线程池的工作原理。在自己编辑之前,请确保已检查直接构建到框架中的ThreadPool
类。或者自定义concurrency limiting task scheduler
。