概述(待修改) 线程池里有若干线程,每个线程里有三类协程:主协程、调度协程和任务协程。 多线程通过互斥锁拿取任务后,利用线程的局部变量各自调用子协程去做任务,互不干扰和影响并发的去执行任务。 IO 协程调度器对 idle 空闲协程进行了重写,主协程只进行任务调度,idle 只监听 epoll 进行任务添加,降低了不同功能之间的耦合,便于后期扩展维护…
Linux Server epoll实现多路复用 Windows Client 初始化Windows下的socket环境 #pragma comment(lib, "Ws2_32.lib") int main() { WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequeste…
高并发非阻塞网络库采用多Reactor多线程模型,实现高并发非阻塞的网络库。 智能指针防止悬空指针TcpConnection继承自enable_shared_from_this,其目的是防止在不该被释放对象的地方释放对象,导致悬空指针的产生。这样可以避免用户可能在处理OnMessage事件时删除对象,确保TcpConnection以正确方式释放。 …
架构
要点 1.服务器程序通常需要处理三类事件:I/O事件,信号及定时事件。有两种事件处理模式: Reactor模式:要求主线程(I/O处理单元)只负责监听文件描述符上是否有事件发生(可读、可写),若有,则立即通知工作线程(逻辑单元),将socket可读可写事件放入请求队列,交给工作线程处理。 Proactor模式:将所有的I/O操作都交给主线程和内核来…