C++程序设计
文章平均质量分 64
腾昵猫
致力于实用技术的研究,同时对哲学也感兴趣。
展开
-
libco——源码分析(一)
总体的网络服务器操作流程是这样的:fill:#333;co_pollother增加epoll_fd监听文件描述符将自己的协程增加到计时队列中发送网络消息或者其他被激活的文件描述符放到激活队列loop取出超时队列中超时的任务放到超时队列将超时队列黏贴到激活队列末尾激活元素的回调函数处理resume挂起的协程loop写入收到消息的数据并返回上层loopco_pollother。原创 2024-01-23 18:00:19 · 1062 阅读 · 1 评论 -
shared_ptr多线程安全性
shared_ptr的计数对象是原子的,但是有一个问题,就是在析构之前shared_ptr调用父类__shared_ptr的析构,__shared_ptr有一个__shared_count成员,这个成员的析构里面调用了其指针成员_Sp_counted_base的方法_M_release,而这个_M_release里面则调用__gnu_cxx::__exchange_and_add_dispatch方法对计数进行-1操作,如果原来的计数为1那么就调用_M_dispose方法将对象执行删除了。原创 2024-01-12 14:56:43 · 525 阅读 · 0 评论 -
TCP网络服务器设计
最近设计了一个网络服务器程序,对于4C8G的机器配置,TPS可以达到5W。业务处理逻辑是简单的字符串处理。服务器接收请求后对下游进行类似广播的发送。在此分享一下设计方式,如果有改进思路欢迎大家交流分享。程序运行在CentOS7.9操作系统上,GCC使用4.8.5版本,网络是千兆网。原创 2023-08-07 11:11:15 · 538 阅读 · 0 评论