c# - 存储从套接字读取的数据以供另一个线程读取的最有效方法是什么?

标签 c# sockets

所以我有一个使用高速I/O完成端口套接字的类。我接收的数据协议(protocol)有一个 17 字节的 header 和一个在 header 中指定的可变数据有效负载,因此我没有为每个 header 和有效负载单独调用 ReceiveAsync,而是抓取一个 1024 字节的缓冲区 block 以节省 CPU 使用率。

但是,我不确定存储这些数据的最佳方式是什么?它必须是有序的,我想要一个单独的线程来进行处理,而不会出现任何线程或性能问题。

我应该查看内存流还是类似的东西?

有什么想法吗?

最佳答案

不要存储它。并且不要使用另一个线程来阅读它。我会使用相同的线程将其反序列化为更有用的东西。然后将其放入另一个线程中,让 IOCP 线程继续处理。

关于c# - 存储从套接字读取的数据以供另一个线程读取的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7629454/

相关文章:

c# - WF4工作流服务和 Entity Framework 问题

sockets - 如果不需要回退,使用WebSocket API代替Socket.io有任何优势吗?

c# - 显示多个表单

c# - 在 Xamarin Forms Windows 应用程序中使用 AcquireTokenAsync() 与 Azure AD B2C 和自定义策略时出现连接问题

c# - Azure Functions - 返回类型 HttpResponseMessage 和 IActionResult 之间的差异

c# - 使用 System.Reflection 加载 ASP.NET 2.0 aspx 页面?

java - WARN/ActivityManager(78) : Launch timeout has expired, 放弃唤醒锁! -> 这是什么

带有序列化对象的 java.io.StreamCorruptedException

java - 客户端/服务器应用程序中的 UDP

java - 通过 Java 套接字并发写入