面试真题

网络 · 中等 · 网易 / 拼多多

epoll线程安全分析

参考答案
结论:epoll内核实例本身线程安全,但多线程使用方式需注意用户态同步。要点:1.epoll_create返回fd,多线程并发调用epoll_ctl添加/删除事件、epoll_wait获取事件,内核通过互斥锁保护红黑树和就绪链表,本身是安全的;2.但多个线程从同一epoll_wait取得同一socket事件并操作该socket时,需用户态加锁避免竞态;3.常见模型:单线程epoll_wait派发到线程池,或各线程独立epoll实例;4.注意:若共用event数组,epoll_wait调用需串行或各线程独立缓冲区。原理:内核数据结构操作原子化,业务处理逻辑不在内核保护范围。
题目整理自公开面经,答案由校招宝自研生成,仅供参考