我已经asynchronous
在C#中完成了一个小型的TCP服务器/客户端...
...而且我一直在想:
C#API实现了select
和epoll
,这是一种经典但简单的异步方法。微软为什么要引入BeginConnect
/BeginSend
系列,在我看来,/系列的设计更为复杂(也增加了代码行)。
因此,使用BeginXXX()“趋势”,我注意到System.Threading
需要导入(对于事件)。这是否也意味着涉及线程?
选择和轮询有两个问题:
能够仅指定将在完成时神奇地调用的回调会更好。这会自动扩展,并且无需分配中央位置。.NET中的异步IO完全没有麻烦。它只是(有效地)工作。
Windows上的异步IO是无线程的。IO运行时,没有一个线程在忙于为其服务。.NET中的所有异步IO都使用操作系统支持的真正异步IO。这意味着IO或完成端口重叠。
查看异步/等待,它也可以与套接字一起使用。它们提供了使用我所知道的最简单的异步IO方式。这包括所有语言和平台。通过易用性判断,select和poll甚至不在同一个联盟中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句