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