Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从套接字读入IntPtr_C#_Sockets_Unmanaged - Fatal编程技术网

C# 从套接字读入IntPtr

C# 从套接字读入IntPtr,c#,sockets,unmanaged,C#,Sockets,Unmanaged,我有一个c#应用程序,在其中我将数据从网络读取到一个固定的缓冲区。但是,我不创建固定缓冲区。缓冲区作为非托管内存块(IntPtr)传递给我。Receive方法只接受字节[]或要读入的字节数组 最简单的方法是将数据读入临时缓冲区,然后将数据复制到非托管块中,但完成此操作后,应用程序只需进行内存复制,就可以多使用约25%的cpu 是否有任何方法可以将非托管块传递到套接字读取中并避免执行额外的memcopy?这是一个XY问题。运行速度为1 Gb/s的快速网络适配器的速度很容易比内存总线带宽慢300倍。

我有一个c#应用程序,在其中我将数据从网络读取到一个固定的缓冲区。但是,我不创建固定缓冲区。缓冲区作为非托管内存块(IntPtr)传递给我。Receive方法只接受字节[]或要读入的字节数组

最简单的方法是将数据读入临时缓冲区,然后将数据复制到非托管块中,但完成此操作后,应用程序只需进行内存复制,就可以多使用约25%的cpu


是否有任何方法可以将非托管块传递到套接字读取中并避免执行额外的memcopy?

这是一个XY问题。运行速度为1 Gb/s的快速网络适配器的速度很容易比内存总线带宽慢300倍。烧掉25%的内核是一个编码错误。我们看不到您的代码。您如何进行内存/缓冲区复制?我想有更好的方法。可能是重复的