【问题标题】:Handling concurrent file writes处理并发文件写入
【发布时间】:2010-12-29 05:13:20
【问题描述】:

我正在开发一个 ASP.NET 应用程序,它接受用户输入并将其序列化为文本文件。现在,当文件仍在写入时,当第二个更新请求出现时,将生成 IOException。

如何处理对该文件的并发更新请求?

【问题讨论】:

    标签: c# asp.net linq concurrency


    【解决方案1】:

    可以实现一个Producer-Consumer,主线程将对象添加到Queue,Consumer将Queue写入Disk。

    【讨论】:

    • 这比使用锁要好,因为写线程不会被阻塞。您可以对日志消息使用线程安全队列并运行单独的后台线程来使用队列并将消息写入文件。然后在消费者中,您还可以实现文件滚动等功能。
    • 这很有效,直到有人按下 CTRL+C 并且您队列中的所有数据都被抛到了风中,而不是您的文件系统。
    【解决方案2】:

    使用它会解决的锁

     lock (this)
    

    { 将它们序列化为文本文件 }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-11
      • 2013-09-21
      • 2011-07-11
      • 1970-01-01
      • 2012-08-09
      • 2016-03-11
      相关资源
      最近更新 更多