【发布时间】:2010-10-20 13:30:42
【问题描述】:
我正在考虑使用UnmanagedMemoryStream 而不是 MemoryStream 来处理网络服务器中的传入(可能还有传出?)数据包。我希望实现的是减少值的复制,如果可能的话,避免复制到堆中(太多)。
例如,对于传入的数据包,可以这样做:
fixed (byte* p = &data) // where data comes from a socket receive
{
using (var stream = new UnmanagedMemoryStream(p, data.Length))
{
// do handling here...
}
}
不过,我不太确定这样做是否有任何实际好处。任何人都可以就这样做是否有任何价值提供一些反馈,而不是使用良好的旧托管 MemoryStream?
提前致谢。
【问题讨论】:
-
老实说,我认为这样做会带来更多的问题,而不是看到的好处。
-
通过复制(太多)准确理解您的意思会很有帮助。对于在流上接收到的所有数据,是否有原因无法在内部缓冲(来自网络套接字的 MemoryStream 提供本地缓冲区 MemoryStream) - 如果没有,为什么这被认为无法满足您的需求?
标签: c# .net memory networking unmanaged-memory