想找个C++的跨平台的,高性能的,易于使用的通讯库,在考虑过libevent、boost::aio、libapr、libev、libuv之后,又看到了gnome的gnio
为什么这个库这么难找呢,这是由于linux下必须用epoll性能才高,在windows下必须用iocp性能才高。而这两个机制差异太大,不容易整合到一起。
退而求其次,只要这个库能支持一万个并发连接的时候性能还过得去就好了。
跨平台重要吗?对很多公司其实都是重要的。很多公司都面临windows/linux的混合环境。各搞一套也不是不可以,很别扭。
最优方案肯定是跨linux/windows整一套通讯库出来,然后天下太平。为什么就没有这样的库呢?主要原因是windows的iocp太猥琐了,与传统的select/poll/epoll模式完全不同。
注:
至少到2012年为止,libevent的维护者说iocp support现在还不够稳定:" If .... you need your IOCP support *now*, you might want to look at boost::asio or something."
然后boost那个怪兽我肯定不想去碰的。