
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 · 119 阅读 · 0 评论 -
Linux3.9中 SO_REUSEPORT 对高并发服务器的改进
背景在传统网络编程模型中,为了实现高并发的服务器, 通常采用的做法是Master进程创建一个Listen socket,然后fork出来N个worker进程,这N个worker进程同时侦听这个socket。然而这种模式仅仅是做到了进程级的可扩展性,即一个进程在忙时,其它进程可以介入帮忙处理,底层的socket句柄其实是同一个!简单点说,这是一个沙漏模型:这种模型在处理同一个sock...原创 2019-03-02 11:16:19 · 672 阅读 · 0 评论 -
个人对网络编程中的一点思考
一、背景在高并发服务器模型中, 为了充分利用CPU的硬件资源, 多进程/多线程模型是必不可少的。 在多进程/多线程模型中, 还要考虑尽量减少上下文切换、进程/线程切换、CPU核心调度切换、锁竞争等。二、多进程/多线程模型在多核时代,一般使用以下比较典型的多进程/多线程服务器模型。首先需要单线程listen一个端口并负责accept连接,当有新连接到来时,根据负载均衡原则唤...原创 2019-03-02 11:55:55 · 197 阅读 · 0 评论