![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
Toni-Kroos
这个作者很懒,什么都没留下…
展开
-
双链表
#ifndef __LIST_H__ #define __LIST_H__ #ifndef offsetof #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) #endif #ifndef container_of #define container_of(ptr, type, member) ({ ...原创 2019-01-29 17:01:36 · 89 阅读 · 0 评论 -
Linux3.9中 SO_REUSEPORT 对高并发服务器的改进
背景 在传统网络编程模型中,为了实现高并发的服务器, 通常采用的做法是Master进程创建一个Listen socket,然后fork出来N个worker进程,这N个worker进程同时侦听这个socket。 然而这种模式仅仅是做到了进程级的可扩展性,即一个进程在忙时,其它进程可以介入帮忙处理,底层的socket句柄其实是同一个!简单点说,这是一个沙漏模型: 这种模型在处理同一个sock...原创 2019-03-02 11:16:19 · 635 阅读 · 0 评论 -
个人对网络编程中的一点思考
一、背景 在高并发服务器模型中, 为了充分利用CPU的硬件资源, 多进程/多线程模型是必不可少的。 在多进程/多线程模型中, 还要考虑尽量减少上下文切换、进程/线程切换、CPU核心调度切换、锁竞争等。 二、多进程/多线程模型 在多核时代,一般使用以下比较典型的多进程/多线程服务器模型。 首先需要单线程listen一个端口并负责accept连接,当有新连接到来时,根据负载均衡原则唤...原创 2019-03-02 11:55:55 · 167 阅读 · 0 评论