gpt4 book ai didi

c# - 同时写入同一个文件延迟

转载 作者:太空宇宙 更新时间:2023-11-03 21:27:03 26 4
gpt4 key购买 nike

我正在使用异步工作的套接字服务器程序。我需要将传入的数据包写入单个文件。一次有数百个客户端连接,可以并发写入文件。这是将接收到的数据包写入文件的代码...

static ManualResetEvent signal = new ManualResetEvent(false);
signal.WaitOne();
using (StreamWriter sw = new StreamWriter(path, true))
sw.WriteLine(message);
signal.Set();

问题在于它正在减慢要接收的下一个数据包。

最佳答案

您需要将阅读和写作分离。您可以使用队列来做到这一点。

创建一个线程安全的消息队列( ConcurrentQueue 突然想到)。

客户端将消息推送到队列中。

有一个单个 写入器从队列中弹出消息并将每条消息依次提交到磁盘(无论如何,来自多个线程的并发文件 IO 通常是性能 killer )。

现在,您唯一需要的同步由队列处理,因此它很好地消除了死锁/阻塞的潜在来源,并且消费者/生产者链的两端都能够以最快的速度工作。

或者,看看 TPL DataFlow .它是为这些类型的生产者/消费者情况而构建的。这是您值得的时间投资。

关于c# - 同时写入同一个文件延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26381599/

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