delphi 2010 -文件流指针



我需要将许多小文件流复制到一个文件流中。每个文件流都有自己指定的位置,即FS1先走,然后是FS2,依此类推。但是在多线程执行程序时,先完成处理的线程会先添加它,从而导致错误。

是否有任何方法可以定义它的位置,以便无论我们按什么顺序添加它们,它们都会在正确的位置?

我试着事先创建许多头文件,这样文件流就会替换这些头文件,但是搜索这些头文件只会减慢程序的速度。

这个问题是我上一个问题的延续,因为First processedFS首先跳转(拷贝),所以我们需要定义它将被复制的位置。

请参考这个问题:

顺序太

在没有同步锁的情况下,不能让多个线程同时写入同一个文件,并且您还需要根据哪个线程在任何给定时刻需要写入它来来回重新查找流,因此它会在文件内的正确偏移位置写入。这是很大的开销。

但是,您可以让多个线程使用不同的文件流同时写入同一个文件,前提是流之间的共享权限兼容以允许并发写入并保存数据。将文件预先设置为所需的长度,然后根据需要在线程之间划分该长度的部分。给每个线程自己的流到目标文件,首先寻找其分配的部分的适当的开始偏移量。然后,每个线程可以正常地写入其各自的流,而不必与其他线程同步或重新查找其流。只要确保每个线程不超过文件中分配的部分的界限,这样它就不会覆盖另一个线程的数据。

最新更新