gpt4 book ai didi

c# - 随机偏移的异步 IO

转载 作者:太空宇宙 更新时间:2023-11-03 22:00:05 25 4
gpt4 key购买 nike

我们有一个 20 GB 的文件,我们希望从中以随机偏移读取数据,因此它不是顺序读取。我打算使用异步 IO,但是我注意到这个限制 –

正如我所说,我的要求是随机偏移读取。但是,BeginRead API 不会对文件进行偏移,它只会对正在读取的缓冲区进行偏移(http://msdn.microsoft.com/en-us/library/zxt5ahzw)

所以我唯一的选择是使用 FileStream.Seek 。但是,问题是如果我使用异步 IO

FileStream fs = Foo.txt 被两个线程使用

Thread 1                               Thread 2

fs.Seek(offset1)
(Thread 1 gets preempted)
fs.Seek(offset2)
fs.BeginRead
fs.BeginRead

如您所见,如果线程 1 在 Seek to offset 1 之后被抢占,那么线程 1 将最终从 offset2 读取数据,这并非本意。

这是否意味着我必须使用锁?这将破坏异步 IO 的目的。

最佳答案

完全不清楚这是否适用于您的情况,但请提供 memory mapped files看看,它可能会给你一些想法。

关于c# - 随机偏移的异步 IO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10543252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com