但我确实喜欢使用Stream.ReadAsync和Stream.WriteAsync方法编写代码的await/async方式。
在性能/内存方面有什么不同吗,或者我只是在语法上有所不同?
发布于 2013-03-08 15:46:46
使用socketasynceventargs的优点是减少垃圾收集器的压力,并将套接字的缓冲区分组以防止内存溢出异常。
通过使用SocketAsyncEventArgs池,您无需为每次读写调用创建和收集IAsyncResult。
其次,可以为每个SocketAsyncEventArgs分配较大的byte[]块的一部分。这可以防止内存碎片,这有助于减少内存占用。
最后一个重要的区别是,根据MSDN Library,当套接字缓冲区已满时,Begin/End Send方法可能会阻塞。SocketAsyncEventArgs不会阻塞,而是仅写入一定数量的字节,这取决于套接字缓冲区中的空间量,回调将指定写入的字节数量。
除非是边缘情况,否则优势确实不明显。除非您遇到指定的任何一个问题,否则我建议您选择对您来说最舒适和可维护的。
https://stackoverflow.com/questions/14856990
复制相似问题