Filestream 文件流指针

Filestream 文件流指针,filestream,delphi-2010,Filestream,Delphi 2010,我需要将许多小文件流复制到一个文件流中。每个文件流都有自己的指定位置,即先是FS1,然后是FS2,依此类推。但是,在对程序进行多线程处理时,完成处理的线程会首先添加程序,从而导致错误 我们有没有办法定义它的位置,这样无论我们添加它们的顺序是什么,它们都会位于正确的位置 我试着在手之前创建许多头,这样文件流将替换这些头,但是搜索这些头只会减慢程序的速度 这个问题是我上一个问题的继续,因为FirstProcessedFS首先跳转(复制),所以我们需要定义复制它的位置 请参阅以下问题: 如果不使用同步

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

我们有没有办法定义它的位置,这样无论我们添加它们的顺序是什么,它们都会位于正确的位置

我试着在手之前创建许多头,这样文件流将替换这些头,但是搜索这些头只会减慢程序的速度

这个问题是我上一个问题的继续,因为FirstProcessedFS首先跳转(复制),所以我们需要定义复制它的位置

请参阅以下问题:


如果不使用同步锁对同一文件流进行包装,则不能让多个线程同时写入同一个文件流,并且还需要根据在任何给定时刻需要写入的线程来来回重新查找该流,以便它在文件内以正确的偏移量写入。这是很大的开销


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

这肯定可以解决您的问题。不过,你首先需要清楚地说明这个问题。多线程磁盘访问似乎不太可能提高性能。也许你太复杂了。