惊群效应中epoll_create一定要在fork之后

背景

多进程单线程epoll程序,惊群问题是绕不开的,即使内核替你解决了accept的惊群问题,epoll的还是需要用户自己解决,这个事情不应该由内核管,它也管不了。

我在测试中发现,epoll_create的创建工作,一定要在fork之后,否则就出现串线现象,就是a进程accept后新建的socket连接,等到下次触发in事件时,就串到b进程中了,这个很好测试,可以先开两个进程,挂载上去一试便知。

后来我把epoll_create的位置放在fork之后,发现没有这个现象了

分析

为什么会有这个现象?

其实我真的没有想明白,我即使是在fork之前创建,可是fork之后,子进程是复制了父进程的资源,那么对应的epoll句柄也应该是复制的啊,现在出现了串线现象,说明子进程并不是复制了父进程的资源,而是共享了父进程的资源

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一章 Nginx简介 Nginx是什么 没有听过Nginx?那么一定听过它的“同行”Apache吧!Ngi...
    JokerW阅读 32,872评论 24 1,002
  • fork,vfork,cloneUnix标准的复制进程的系统调用时fork(即分叉),但是Linux,BSD等操作...
    Albert陈凯阅读 5,242评论 0 0
  • ### main函数执行之前做了什么?(iOS) & dyld 是Apple 的动态链接器;在 xnu 内核为程...
    天使君阅读 3,954评论 0 1
  • 情人節,我愛的那個逗逼在哪呢,在幹嘛。
    妙不可言鲁阅读 2,187评论 0 0
  • 今天上午停电,下午还没来电,又起大风了。 一个55岁的四川人在下面拉板,收班时让他把板压住,防止被风吹跑。他...
    三良薯业阅读 1,280评论 0 0