- 博客(8)
- 收藏
- 关注
原创 smallchat改造
smallchat是redis作者使用c开发的聊天服务器,实现了聊天室的功能。核心代码200多行,使用了IO多路复用技术。是一款适合学习IO多路复用的开源软件。原实现是使用select实现了IO多路复用。本文改造了原代码,改用epoll实现,并使用reacotor模型,使代码更精简,功能更聚合,方便使用和理解。
2023-11-30 19:15:30
191
原创 IO多路复用学习(5)reactor网络模型
reactor模型组成:非阻塞的io + io多路复用特征:基于事件循环,以事件驱动或事件回调的方式来实现业务逻辑理解:对io的处理转换为对事件的处理。单reactor模型redis单reactor模型 + 任务队列 + 线程池skynet多reactor多线程memcached多进程nginx
2023-10-23 19:44:35
23
原创 线程池技术
1.任务耗时长,主线程执行任务阻塞其他任务执行。把耗时的任务交给线程池处理。I/0阻塞型,计算处理型。1.系统资源有限,不可能无限创建线程,线程太多调度复杂,加解锁,性能反而下降。2.消费者线程:就是线程池,有固定大小的线程,处理任务。1.生产者线程:复杂任务分发,把任务交给线程池处理。2.频繁创建销毁线程消耗系统资源,影响性能。生产者往队列里放任务,消费者从队列里取任务。如果队列从空变为非空,唤醒消费者线程。如果队列为空,消费者线程阻塞休眠。2.需要线程并发处理。线程池干脏活,累活。
2023-09-21 10:08:51
18
原创 IO多路复用学习(3) epoll
本篇介绍epoll的相关机制和用法。epoll API有三个:epoll_create,epoll_wait,epoll_ctl。三个API共同使用才能完成epoll IO多路复用的功能,这里是与select和poll不一样的地方。
2023-09-18 14:26:27
78
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人