首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >等待/异步还是SocketAsyncEventArgs?

等待/异步还是SocketAsyncEventArgs?
EN

Stack Overflow用户
提问于 2013-02-13 23:28:26
回答 1查看 2K关注 0票数 2

但我确实喜欢使用Stream.ReadAsyncStream.WriteAsync方法编写代码的await/async方式。

在性能/内存方面有什么不同吗,或者我只是在语法上有所不同?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-08 15:46:46

使用socketasynceventargs的优点是减少垃圾收集器的压力,并将套接字的缓冲区分组以防止内存溢出异常。

通过使用SocketAsyncEventArgs池,您无需为每次读写调用创建和收集IAsyncResult。

其次,可以为每个SocketAsyncEventArgs分配较大的byte[]块的一部分。这可以防止内存碎片,这有助于减少内存占用。

最后一个重要的区别是,根据MSDN Library,当套接字缓冲区已满时,Begin/End Send方法可能会阻塞。SocketAsyncEventArgs不会阻塞,而是仅写入一定数量的字节,这取决于套接字缓冲区中的空间量,回调将指定写入的字节数量。

除非是边缘情况,否则优势确实不明显。除非您遇到指定的任何一个问题,否则我建议您选择对您来说最舒适和可维护的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14856990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档