首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >File.Open跨线程写入

File.Open跨线程写入
EN

Stack Overflow用户
提问于 2013-05-14 00:15:53
回答 3查看 681关注 0票数 1

打开文件并跨多个线程向其写入流是否安全?如果没有,我可以实现什么来保证它的安全性?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-14 00:20:08

不,标准FileStream不是线程安全的。

您应该使用var safe = Stream.Synchronized(File.Open(...));创建线程安全的包装器。

Stream.Synchronized() on MSDN

票数 3
EN

Stack Overflow用户

发布于 2013-05-14 00:21:15

不是的。这不是线程安全的。直观地说,当索引是一个移动目标时,如何写入文件?一个想法是创建单独的文件,并将它们与另一个进程结合起来,可能是由某种已完成的事件触发的(例如,所有文件都已到达)。

使用多个线程写入单个文件的概念有一些代码味道。国际海事组织,重新检查您的选择,并提出一个不同的方法来解决这个问题。

票数 1
EN

Stack Overflow用户

发布于 2013-05-14 00:27:21

不,它本身并不安全,但是您可以使用lock关键字来控制对FileStream对象的跨线程访问。

例如:

代码语言:javascript
运行
复制
FileStream fStream = File.Open('foo.txt', FileMode.Append);

lock (fStream)
{
  // Some operation on fStream
}

在这种情况下,Knaģ发布的答案可能是可行的,但使用lock关键字的互斥锁是更通用的解决方案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16526652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档