像FileStream.BeginWrite线程安全的异步文件IO吗?如果没有,那么它需要用“SyncLock”包装,这意味着它仍然是阻塞线程。
答案 0 :(得分:4)
FileStream.BeginWrite
已经启动了一个新线程来访问这些文件。您不需要在单独的线程上启动FileStream.BeginWrite
(因为这将是线程中的线程)。另一方面,多个FileStream.BeginWrite
函数不应同时访问同一文件。
答案 1 :(得分:4)
此外,如果资源被多个线程访问,则意味着它是一个共享资源,并且有大量资源在c#中使用它们。
答案 2 :(得分:1)
FileStream.BeginRead / BeginWrite实现是异步的,但它们对重叠I / O的使用不是以线程安全的方式完成的。
您可以看到BeginRead / BeginWrite不接受读/写文件位置作为参数,因此对其他线程(如Seek)的操作可能会导致读/写文件位置错误。
如果您仍然不相信,Microsoft的FileStream实现明确指定"这不是线程安全。"在BeginReadCore&内的评论中BeginWriteCore
底线:如果您需要线程安全的重叠I / O,那么您必须使用P / Invoke和ReadFile / WriteFile。