设为首页 加入收藏

TOP

6.3.3 线程模型
2013-10-07 16:03:01 来源: 作者: 【 】 浏览:50
Tags:6.3.3 线程 模型

6.3.3 线程模型

muduo 的线程模型符合我主张的one loop per thread + thread pool 模型。每个线程最多有一个EventLoop,每个TcpConnection 必须归某个EventLoop 管理,所有的IO 会转移到这个线程。换句话说,一个file descriptor 只能由一个线程读写。TcpConnection 所在的线程由其所属的EventLoop 决定,这样我们可以很方便地把不同的TCP 连接放到不同的线程去,也可以把一些TCP 连接放到一个线程里。

TcpConnection 和EventLoop 是线程安全的,可以跨线程调用。
TcpServer 直接支持多线程,它有两种模式:

单线程,accept(2) 与TcpConnection 用同一个线程做IO。

多线程,accept(2) 与EventLoop 在同一个线程,另外创建一个EventLoop-ThreadPool,新到的连接会按round-robin 方式分配到线程池中。

后文§6.6 还会以Sudoku 服务器为例再次介绍muduo 的多线程模型。

结语

muduo 是我对常见网络编程(www.cppentry.com)任务的总结,用它我能很容易地编写多线程的TCP服务器和客户端。muduo 是我业余时间的作品,代码估计还有一些bug,功能也不完善(例如不支持signal 处理10),待日后慢慢改进吧。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇6.3.1 代码结构(2) 下一篇6.4.1 TCP 网络编程本质论

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·MySQL 安装及连接-腾 (2025-12-25 06:20:28)
·MySQL的下载、安装、 (2025-12-25 06:20:26)
·MySQL 中文网:探索 (2025-12-25 06:20:23)
·Shell脚本:Linux Sh (2025-12-25 05:50:11)
·VMware虚拟机安装Lin (2025-12-25 05:50:08)