POCO的优点: 1) 比boost更好的线程库,特别是一个活动的方法的实现,并且还可设置线程的优先级。 2) 比 boost:asio更全面的网络库。但是boost:asio也是一个非常好的网络库。 3) 包含了一些Boost所不包含的功能,像XML,数据库接口等。 4) 跟Boost相比,集成度 ...
分类:
其他好文 时间:
2017-07-29 21:24:51
阅读次数:
204
Explorer 一个key-value存储系统,带有客户端和服务器端。使用非常方便。 使用B+树作为存储引擎,客户端和服务器端使用TCP协议进行通信。 代码采用C++实现,底层将客户端和服务器通信封装成了一个网络库,里面还有些还不错的实现可供看看,比如线程池、工作队列、Reactor设计模式实现等 ...
分类:
其他好文 时间:
2017-07-28 23:38:22
阅读次数:
138
libevent是一个使用C语言编写的,轻量级的开源高性能网络库,使用者很多,研究者也很多。由于代码简洁,设计思想简明巧妙,因此很适合用来学习,提升自己C语言的能力。 libevent有这样显著地几个亮点: 1.事件驱动,高性能 2.轻量级,专注于网络,不如ACE那么庞大臃肿 3.代码精炼易读 4. ...
分类:
其他好文 时间:
2017-07-24 13:25:11
阅读次数:
246
最近想研究下 libev 这个网络库,所以先从官方文档一个最简单的 demo 开始,代码如下: 编译并运行: 编译的时候需要链接 libev 动态库。 从上面可以看出,我是运行了这个程序两次。第一次是运行后就不再执行任何操作, 等待程序自己因为超时而结束。第二次就是按了一个回车,使 stdin 处于 ...
分类:
其他好文 时间:
2017-07-09 10:28:57
阅读次数:
189
前段时间使用libevent网络库实现了一个游戏服务器引擎,在此记录下其中遇到的一个问题。我在设计服务器上选择把逻辑和网络分线程,线程之间通信使用队列。但是这样做会有个问题,当逻辑线程想要主动的发一个数据包的时候,需要一种唤醒网络线程的机制。由于对libevent的api不熟悉,起初我是自己实现这个 ...
分类:
编程语言 时间:
2017-07-08 21:08:32
阅读次数:
599
总结说的有的过大,算是对自己学习的一个总结。兴许会不断补充。 模型总结 muduo是基于非堵塞的IO和事件驱动的网络库。 muduo的总体结构时one loop per thread+threadpool,图例如以下: mainReactor和subReactor都是EventLoop,在mainR ...
分类:
其他好文 时间:
2017-06-27 10:53:07
阅读次数:
108
解释下,”gevent.spawn()”方法会创建一个新的greenlet协程对象,并运行它。”gevent.joinall()”方法会等待所有传入的greenlet协程运行结束后再退出,这个方法可以接受一个”timeout”参数来设置超时时间,单位是秒。运行上面的程序,执行顺序如下: 所以,程序运 ...
分类:
编程语言 时间:
2017-06-22 23:47:57
阅读次数:
283
AFNetworking3.0是目前最新的版本,本来打算介绍一下2.6,但是想想2.6名不久矣,就决定不介绍了,有兴趣的小伙伴可以上网查一查。下面我就开始进入正题了。 目前使用人数最多的第三方网络库,没有之一。从开始的NSURLConnection到现在的NSURLSession,它都一直保持着与苹 ...
分类:
移动开发 时间:
2017-06-18 22:48:40
阅读次数:
219
作者:Jessica McKellar Twisted是用Python实现的基于事件驱动的网络引擎框架。Twisted诞生于2000年初,在当时的网络游戏开发者看来,无论他们使用哪种语言,手中都鲜有可兼顾扩展性及跨平台的网络库。Twisted的作者试图在当时现有的环境下开发游戏,这一步走的非常艰难, ...
分类:
编程语言 时间:
2017-06-16 16:35:31
阅读次数:
263
一、Asio网络库 截止到C++17,C++标准库都没有加入网络通信库。实际项目网络编程是非常常见的功能,直接使用操作系统API是低效率且不稳定的,比较好的方法是借助第三方成熟可靠的网络库。据我所知C++中目前比较有名的网络库有ACE、libevent和boost.Asio,这三个库都是跨平台的,各 ...
分类:
其他好文 时间:
2017-06-09 16:01:05
阅读次数:
238