在非Windows平台上使用mono时,AsyncCallback是否很好?

时间:2016-09-25 11:56:44

标签: c# mono

我正在编写一个网络服务器,无论运行的操作系统如何,我都希望它能够正常运行。我一直在使用与Does C# AsyncCallback creates a new thread?

相同的实现方式

我一直在搜索有关这是一个好的实现还是我应该去一个线程池的信息。提问者对上述问题的选择回答似乎是说使用AsyncCallback来处理请求是一种非常好的方法,我应该使用它而不是使用线程池。

但我想知道这对任何操作系统是否属实,或者只适用于Windows?

1 个答案:

答案 0 :(得分:1)

  

我一直在搜索有关这是一个好的实现还是我应该去一个线程池的信息。提问者选择上述问题的答案似乎表明使用AsyncCallback处理请求是一种非常好的方法

确实是的,Async-Await在这种情况下是有道理的,因为它是基于IO的调用,远程调用而设计的,除了将请求调度到远程主机之外,调用者没有什么需要,所以一个线程池线程将是一种纯粹的浪费,因为它等待呼叫返回,同时保留重要资源。实际上,Async-Await将有助于使系统具有更高的可扩展性,因为调用在基于硬件(设备驱动程序)的IO完成端口上排队。

  

但我想知道这对任何操作系统是否属实,或者只适用于Windows?

当您尝试在Mono (Linux)上使用它时,如果公开了该功能,那么它必须以Windows中的预期方式工作,尽管兼容性详细信息here。如上所述,添加我的观点,因为这是纯粹基于硬件的功能,在Windows和其他Linux的情况下,它与Operating systems在同一行上实现,因此虽然内部实现,API调用和优化肯定会有所不同,但它确实能够在相同的视角下工作,但对于最终用户来说,使用它的体验不会改变