C#中的异步套接字类的设计

斯蒂夫

我已经asynchronous在C#中完成了一个小型的TCP服务器/客户端...

...而且我一直在想:

  1. C#API实现了selectepoll,这是一种经典但简单的异步方法。微软为什么要引入BeginConnect/BeginSend系列,在我看来,/系列的设计更为复杂(也增加了代码行)。

  2. 因此,使用BeginXXX()“趋势”,我注意到System.Threading需要导入(对于事件)。这是否也意味着涉及线程?

usr

选择和轮询有两个问题:

  1. 它们通常以单线程方式使用。由于这个原因,它们无法缩放。
  2. 它们要求所有IO都通过进行轮询的中央位置进行调度。

能够仅指定将在完成时神奇地调用的回调会更好。这会自动扩展,并且无需分配中央位置。.NET中的异步IO完全没有麻烦。它只是(有效地)工作。

Windows上的异步IO是无线程的。IO运行时,没有一个线程在忙于为其服务。.NET中的所有异步IO都使用操作系统支持的真正异步IO。这意味着IO或完成端口重叠。

查看异步/等待,它也可以与套接字一起使用。它们提供了使用我所知道的最简单的异步IO方式。这包括所有语言和平台。通过易用性判断,select和poll甚至不在同一个联盟中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C#中的异步套接字类的设计

来自分类Dev

异步套接字-与C#中的永久套接字的双工通信

来自分类Dev

通过接口的C#异步套接字

来自分类Dev

异步C ++套接字

来自分类Dev

.Net 4.5的C#套接字性能异步与[...]异步与[...]

来自分类Dev

.Net 4.5的C#套接字性能异步与[...]异步与[...]

来自分类Dev

C#套接字:异步调用中的同步调用

来自分类Dev

C#套接字BeginRecieve异步回调未被调用

来自分类Dev

C#异步套接字同时读取和写入?

来自分类Dev

C#中的设计类

来自分类Dev

D中的异步套接字

来自分类Dev

C#中的Unix套接字

来自分类Dev

GUI在C#套接字中冻结

来自分类Dev

C#在套接字中更新ObservableCollection

来自分类Dev

在C#中创建线程安全套接字类

来自分类Dev

服务器套接字不能接受客户端。(C# UWP 异步套接字编程)

来自分类Dev

C#中的类设计结构

来自分类Dev

在Python异步中检测套接字EOF

来自分类Dev

任务中的异步套接字操作

来自分类Dev

C ++ ASIO:异步套接字和线程

来自分类Dev

如何在C#中通过套接字发送文件

来自分类Dev

基于C#中Mac地址的套接字连接

来自分类Dev

C#套接字编程中的时序控制

来自分类Dev

通过套接字在C#中传输半文件?

来自分类Dev

如何正常关闭异步服务器套接字?C#

来自分类Dev

无法关闭异步C#服务器套接字连接

来自分类Dev

异步C#服务器从多个套接字连续读取

来自分类Dev

C#异步套接字方法(BeginSend / BeginReceive等)是否必须是静态的?如果是这样,为什么?

来自分类Dev

C#线程计时器需要停止自身的异步套接字代码