一直对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. 【BZOJ 1033】 [ZJOI2008]杀蚂蚁antbuster(判断线段是否和圆相交)

    [题目链接]:http://www.lydsy.com/JudgeOnline/problem.php?id=1033 [题意] https://www.zybuluo.com/Jerusalem/n ...

  2. TensorFlow 学习(五)—— Session

    A Session object encapsulates the environment in which Tensor objects are evaluated. 一个会话对象(session ...

  3. dotnet core 通过修改文件头的方式隐藏控制台窗口

    原文:dotnet core 通过修改文件头的方式隐藏控制台窗口 在带界面的 dotnet core 程序运行的时候就会出现一个控制台窗口,本文告诉大家使用最简单方法去隐藏控制台窗口. 最近在使用 A ...

  4. 关于CORS跨域更细节的思考

    权威的资料看MDN,也可以看阮一峰的文章.不过感觉阮一峰对于CORS的描述有问题,简单请求被阮一峰描述为2次浏览器请求了.这个要自己搭个服务器试一下.跨域基本都是根据域名判断的,自己是否要再买个域名呢 ...

  5. C++调用IDL程序的做法(一)

    作者:朱金灿 来源:http://blog.csdn.net/clever101 IDL是一种数据分析和图像化应用程序及编程语言,先由美国ITT公司所有.最初在七十年代后期用于帮助科学家分析火星探险卫 ...

  6. 强大的 pdf 编辑器 —— Acrobat

    菜单栏中的 [编辑](Edit)⇒ [编辑文本和图像](Edit Text & Images) 可以随意地编辑当前 pdf 中的文本信息,和图像信息: pdf 格式的转换,更是不在话下. 转 ...

  7. WPF MVVM系列文章

    网上搜到了MSDN Magazine上Laurent Bugnion的系列文章. 以下为关于WPF的优秀实践,很有必要阅读. 很吸引人的标题有: IOC Containers and MVVM Mes ...

  8. SpringMVC+easyUI 分页,查询 (完整的CRUD)

    最终完毕CRUD的功能了,注意,这里会对前面有一些修改,UserController的listUser() 已经改写了,如今把所有整理一下吧. JSP: <%@ page language=&q ...

  9. 性能测试以及对redis

    Ignite性能测试以及对redis的对比   测试方法 为了对Ignite做一个基本了解,做了一个性能测试,测试方法也比较简单主要是针对client模式,因为这种方法和使用redis的方式特别像.测 ...

  10. sql server中使用链接服务器访问oracle数据库

    一.  安装配置oracle客户端 要访问orcale数据,必须在访问的客户端机器上安装oracle客户端. Orcale有两种形式的客户端: l         完整的客户端 包括访问服务器端数据库 ...