更新了一个比以前更正经更正式的版本,上个版本比较随意,随手创建一个线程池然后给一个fd分一个独占线程,比较随意。这次更新了epoll并采取了分文件编写模式,也不再是一个连接一个线程看着就粗制滥造。
目前的工作原理是,主线程epollwait,等到接受缓存区接受数据以后正常做监听套接字和连接句柄的判断,如果是来自某客户端的消息,将消息和来源fd打包给转发函数再丢进线程池任务队列做转发处理,所以目前就是主线程wait-(accept/recv),如果是recv再交给子线程转发。目前应该是可以支持1023台设备同时连接,下一步租个服务器跑sever端和朋友们一起happy。
另外,服务端也是在qt写的,cmak中加入了连接pthread库的代码,需要安装pthread。
另外记录几个经典错误,强转的优先级问题,途中想把ptr(void*,存的某结构体地址)做一个结构体指针强转,但是少个括号,被强转对象变成了ptr->cip。


在我直接调用enqueue,将某类成员函数作为形参传入的时候报错需要静态函数,不想乱静态用lambda做一个缓冲,拷贝类对象给子线程独占就ok。
文章讲述了作者对一个网络服务端进行升级,采用了更严谨的epoll机制和线程管理,使用Qt和CMake集成线程库。重点讨论了并发连接处理的优化,以及遇到的问题如强转错误和函数传递方式的调整。
422

被折叠的 条评论
为什么被折叠?



