moduo网络库

Reactor

moduo网络库的reactor模式基本构成为“non-blocking I/O + I/O multiplexing”,程序的基本结构是一个事件循环(event loop),以事件驱动(event-driven)和事件回调(event callback)的方式实现业务逻辑。此文参照陈硕的moduo网络库稍作简化,抽出reactor模式的基本框架。

1、线程同步:采用底层同步原语,互斥器+条件变量

线程同步尽量使用高级并发编程构建。若要使用底层同步原语,则尽量只使用互斥器和条件变量。互斥器和条件变量构成了多线程编程的全部必备同步原语,用它们即可完成任何多线程同步任务。

1.1封装互斥器

封装互斥器保护对象共享资源,不同对象间不会构成锁争用。其中:

MutexLock封装临界区。用RAII手法封装互斥器的创建与摧毁。

MutexLockGuard封装临界区的进入和退出,即加锁和解锁。它是一个栈上对象,作用域刚好等于临界区域。
1.2封装条件变量
2. 封装线程thread
采用线程池技术
3.事件循环
Reactor模式基本构成为“non-blocking I/O + I/O multiplexing”,遵循“one loop per thread” 。程序的基本结构是一个事件循环(event loop),通过I/O多路复用器select、poll和epoll等实现。再以事件驱动(event-driven)和事件回调(event callback)的方式实现业务逻辑,此处暂时省略该方式,事件循环仅调用系统函数poll延时1s。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值