随笔分类 - 开源项目学习
摘要:evutil: 用于抽象不同平台网络实现差异的通用功能。 event和event_base: libevent的核心,为各种平台特定的、基于事件的非阻塞 IO后端提供抽象API,让程序可以知道套接字何时已经准备好,可以读或者写,并且处理基本的超时功能,检测OS信号。用 libevent 函数之前需要
阅读全文
摘要:1. libevent简介 Libevent 有几个显著的亮点: => 事件驱动(event-driven),高性能; => 轻量级,专注于网络,不如ACE那么臃肿庞大; => 源代码相当精炼、易读; => 跨平台,支持Windows、Linux、*BSD和Mac Os; => 支持多种I/O多路复
阅读全文
摘要:发布订阅模式: PUB发送,send。SUB接收,recv。和PUSH-PULL模式不同,PUB将消息同时发给和他建立的链接,类似于广播。另外发布订阅模式也可以使用订阅过滤来实现只接收特定的消息。订阅过滤是在服务器上进行过滤的,如果一个订阅者设定了过滤,那么发布者将只发布满足他订阅条件的消息。这个就
阅读全文
摘要:197 void *zmq_init (int io_threads_) 198 { 199 if (io_threads_ >= 0) { 200 void *ctx = zmq_ctx_new (); 201 zmq_ctx_set (ctx, ZMQ_IO_THREADS, io_thread
阅读全文
摘要:1 ZeroMQ概述 ZeroMQ是一种基于消息队列的多线程网络库,其对套接字类型、连接处理、帧、甚至路由的底层细节进行抽象,提供跨越多种传输协议的套接字。ZeroMQ是网络通信中新的一层,介于应用层和传输层之间(按照TCP/IP划分),其是一个可伸缩层,可并行运行,分散在分布式系统间。 2 系统架
阅读全文
摘要:惊群效应: 举一个很简单的例子,当你往一群鸽子中间扔一块食物,虽然最终只有一个鸽子抢到食物,但所有鸽子都会被惊动来争夺,没有抢到食物的鸽子只好回去继续睡觉, 等待下一块食物到来。这样,每扔一块食物,都会惊动所有的鸽子,即为惊群。对于操作系统来说,多个进程/线程在等待同一资源是,也会产生类似的效果,其
阅读全文