我们需要以大约 100ms 的间隔将一些数据写入文件中,大约 30 分钟,然后等待一段时间,然后再次重复。我们的应用程序是 C#、.net 3.5 应用程序。每次写入的数据很小,不到1MB。现在我们从线程池中获取一个线程,并让该线程在每次接收到新数据时(大约 100 毫秒间隔)写入文件。
我认为还有另一种方法可以做到这一点。我们可以在开始时从 Threadpool 中获取一个线程,并在整个写入 session 期间保持该线程运行。当该线程完成写入时,让它等待下一个信号以从共享位置获取更新数据并再次写入。这种方式的缺点是我们需要同步共享数据对象,以确保如果写入速度较慢,它不会被新数据覆盖。那么它可能会减慢从另一个系统传输数据的通信速度。
我还没有时间编写代码测试它们。你认为值得测试它们吗?还是显然一种方式比另一种方式更好?
最佳答案
您可以使用生产者/消费者模式,这样一个线程可以一直锁定文件,您不需要打开和关闭 FileStream。
这里有一个例子:http://www.yoda.arachsys.com/csharp/threads/deadlocks.shtml
(在“更多监控方法”部分)
关于c# - 在线程频繁写的情况下,哪种方式更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5408793/