libevent、windows和.NET编程

libevent、windows和.NET编程,.net,libevent,.net,Libevent,我尝试了很多开源软件,我注意到开源世界中有相当多的服务器类型应用程序使用libevent来促进基于事件的处理,而不是产生多个线程来处理请求 我还做了很多.NET编程(这是我的核心工作功能),我对学习libevent与.NET事件模型的关系很感兴趣。NET中的事件是否等同于C程序的libevent?我应该学习libevent并尝试在自定义的.NET服务器应用程序中使用它,还是使用标准的.NET事件模型基本上是一样的?.NET事件和libevent不是等价的,尽管它们共享抽象概念 .NET事件允许C

我尝试了很多开源软件,我注意到开源世界中有相当多的服务器类型应用程序使用libevent来促进基于事件的处理,而不是产生多个线程来处理请求


我还做了很多.NET编程(这是我的核心工作功能),我对学习libevent与.NET事件模型的关系很感兴趣。NET中的事件是否等同于C程序的libevent?我应该学习libevent并尝试在自定义的.NET服务器应用程序中使用它,还是使用标准的.NET事件模型基本上是一样的?

.NET事件和libevent不是等价的,尽管它们共享抽象概念

.NET事件允许CLR组件之间的非确定性通信,组件是一个对象-事件是类成员。在其他语言中,不需要对象。事件允许使用者订阅源中特定条件下发生的通知-单击按钮、下载完成、发生异常等。NET事件的一些特征:

  • 它们与底层操作系统无关
  • 您可以为任何条件定义事件
  • 它们并非天生异步(通知程序和被通知程序不一定同时运行,尽管它们可以同时运行)
libevent允许操作系统与使用者之间进行非确定性异步通信。这可能感觉类似于.NET事件,因为它们都反转了控制,但机制非常不同

  • libevent使用特定于操作系统的非阻塞I/O()来提高性能。您的结果将因您使用的操作系统和机制而异
  • libevent事件条件包括文件描述符、操作系统信号或超时的状态更改。不能定义任意回调条件
  • libevent本质上是异步的。消费者在等待操作系统返回时不会阻塞
我应该试着学习libevent和libevent吗 尝试在自定义.NET中使用它 服务器应用程序

如果你是为了好玩,当然可以。如果你这样做是为了工作,也许不是。libevent声称它在*nix系统上获得了最大的性能提升。Windows使用不同的网络模式。libevent开发人员使用的是版本2,但2.0.5仍然是beta版

此外,.NET还提供了自己的非阻塞I/O库