一直对Qt官方的QtNetwork模块抱有遗憾,Qt自带的网络模块用的是select模型,无法支持高并发的服务器开发。最近在网上看到有个libevent for qt的东西,它直接替换了Qt的select模型,支持epoll模型,所以就支持高并发了。这东西好啊,弥补了Qt的不足,也弥补了我的遗憾。我兴致勃勃的从网上下载了源代码(github地址:https://github.com/sjinks/qt_eventdispatcher_libevent),然后在windows上编译,结果每次都报错,不知道为什么。有人用过这个吗?求指教。

这个效果不怎么好的,我当初测试过libev做底层的,在linux下,但是效果和不使用差不多的,大并发同样有glib的erro的。也可能是我当初使用的不对吧。
针对做服务端性能不佳,最好的是不使用QT 的network模块,用其他的库做主力,然后使用Qt Core里面的一些东西代替stl和boost的。
如果还是想QT的事件循环为主,我写过一个解决方案:https://github.com/dushibaiyu/QAsioSocket
你可以测试下,这个是底层用的asio。

可以的,只是,Qt的socket不支持跨线程收发消息的。你需要用信号槽来回中转。
但是如果你用asio的socket的话是没有问题的。
如果只是Qt的话,我也写过相关的线程池的实现:https://github.com/dushibaiyu/QtTcpThreadServer
这个充分利用Qt线程和事件循环的。
这个是简单的说名:http://www.dushibaiyu.com/2013/12/qtcpserver%E5%A4%9A%E7%BA%BF%E7%A8%8B%E5%AE%9E%E7%8E%B0.html

boost::asio用起来很方便的,如果你觉得一个月学习周期。

我关注过golang。没系统学习和使用过。
至于那个效率高,纯echo的没有意义,关联业务之后,那就是开发者和架构的设计了。
理论上说是boost效率更高的。但是boost的学习曲线不好弄得。
我现在也没系统学习过boost,我封装asio是利用C++11 版的asio,可以不依赖boost的(定时器和序列化除外)。
至于你说boost大,你现在也没必要完全去学习的,根据需要着重学习吧。
我当初也用过Qt Core模块去代替boost的很多处理的。
boost的可怕不是多大,是boost的编码风格可读性较差,容易蚕食代码的,还有就是boost的api接口没有那么直观。
我当年在知乎的提问,你可以参考下:http://www.zhihu.com/question/22503121

qt的优势是功能强大,性能稍微差了点。同样功能肯定比boost差不少。

性能,差距很小。但是Qt network和boost.asio的差距是很明显的。
给你几个博客你自己感觉吧。
关于信号槽的:
http://www.dushibaiyu.com/2015/07/qt-signals-slots-connect.html
关于容器的:
http://www.dushibaiyu.com/2014/11/stl-vs-qtl-1.html
http://www.dushibaiyu.com/2014/11/stl-vs-qtl-2.html
http://www.dushibaiyu.com/2014/12/stl-vs-qtl-3.html
容器的是翻译的,没有翻译完,我e文也不是十分好。
这是原文地址,原文里面有测试的,只是要FQ才能看:
https://marcmutz.wordpress.com/effective-qt/containers/

c++17有望有I/O库,据说是基于asio提案的。

http://www.qtcn.org/bbs/read-htm-tid-60285.html

libevent for qt的讨论的更多相关文章

  1. libevent for qt网络模块

    libevent for qt网络模块,直接替换qt的select模型,支持epoll,select,pool.使用非常简单,无需修改以前的代码结构 最近在开发im服务器,需要大并发链接.QT默认的是 ...

  2. 使用libevent进行多线程socket编程demo

    最近要对一个用libevent写的C/C++项目进行修改,要改成多线程的,故做了一些学习和研究. libevent是一个用C语言写的开源的一个库.它对socket编程里的epoll/select等功能 ...

  3. Primecoin在windows上的部署和启动服务

     Primecoin在windows上的部署和启动服务: 一.从官方获得Primecoin的windows版安装包: 二.一路像安装客户端一样的安装: 三.安装成功后它会自动弹出客户端运行,同步数据, ...

  4. bitcoind

    Bitcoin Core Daemon version v0.15.1.0-g7b57bc998f Usage: bitcoind [options] Start Bitcoin Core Daemo ...

  5. 用VS Code搞Qt6:编译源代码与基本配置

    先说明一下,本水文老周仅讨论新版的 Qt 6,旧版的 Qt 不讨论. 尽管 Qt 有自己的开发环境,但老周必须说句不装逼的话:真的不好用.说起写代码,当然了,用记事本也能写.但是,有个高逼格的工具,写 ...

  6. Qt中加载Libevent静态库(通过reimp和rs两条语句将lib转为a)

    文章来源:http://blog.sina.com.cn/s/blog_731bf4c90102wnpr.html 本文仅是个人经验总结,若有错误欢迎指教! 最近要做一个跨平台的项目,同时也涉及到网络 ...

  7. VS 2013编译64位版本QT 4.8.6及使用cmake为依赖QT生成VS项目时Could NOT find Qt4

    对于一些已经解决的问题,本博客不再讨论.只将本人遇到的问题做简单的说明. 一.VS 2013编译64位版本QT 4.8.6 QT项目官网中,对于QT4,其只提供了windows X86的版本,并且支持 ...

  8. Qt on Android 核心编程

    Qt on Android 核心编程(最好看的Qt编程书!CSDN博主foruok倾力奉献!) 安晓辉 著   ISBN 978-7-121-24457-5 2015年1月出版 定价:65.00元 4 ...

  9. QT 中 关键字讲解(emit,signal,slot)

    Qt中的类库有接近一半是从基类QObject上继承下来,信号与反应槽(signals/slot)机制就是用来在QObject类或其子类间通讯的方法.作为一种通用的处理机制,信号与反应槽非常灵活,可以携 ...

随机推荐

  1. jQuery实现复选框的全选、反选、并且根据复选框的<checked属性>控制多个对应div的显示/隐藏

    <!doctype html><html> <head> <meta charset="utf-8"> <title>j ...

  2. Centos root权限的变化

    方法一:更改 /etc/sudoers 文件, 找到以下一行,把前面的凝视(#)去掉 ## Allows people in group wheel to run all commands %whee ...

  3. hadoop 3.x 关闭安全模式

    hdfs启动后发现进入了安全模式,最开始使用hdfs dfsadmin -safemode leave来进行关闭发现无法关闭,只好使用hdfs dfsadmin -safemode forceExit ...

  4. 【cordova】cordova安装步骤(windows)

    原文:[cordova]cordova安装步骤(windows) 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/snow_finland/artic ...

  5. 单点登录原理与简单实现--good

    一.单系统登录机制 1.http无状态协议 web应用采用browser/server架构,http作为通信协议.http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关 ...

  6. wxWindows

    用C++编写跨平台程序 中文版说明 本教程由Gxl117翻译并将继续维护,这是本教程的第一稿,假设发现错误请与我(Email:gxl117@yahoo.com.cn)联系让我能及时修正它.之后还会对这 ...

  7. Method of packet transmission from node and content owner in content-centric networking

    A method of transmitting a content reply packet from a content owner in content-centric networking ( ...

  8. Python经常使用内置函数介绍【filter,map,reduce,apply,zip】

    Python是一门非常简洁,非常优雅的语言,其非常多内置函数结合起来使用,能够使用非常少的代码来实现非常多复杂的功能,假设相同的功能要让C/C++/Java来实现的话,可能会头大,事实上Python是 ...

  9. WPF 路由事件 Event Routing

    原文:WPF 路由事件 Event Routing 1.路由事件介绍 之前介绍了WPF的新的依赖属性系统,本篇将介绍更高级的路由事件,替换了之前的.net普通事件.相比.net的事件,路由事件具有更强 ...

  10. MVC EF Code First

    1 在Models里面创建类,用[Key]特性指定主键: 2 在Model里面增加导航属性: 3 在web.config里面增加连接字符串 4 创建继承于DbContext的类 5 创建Control ...