我正在使用epoll(边缘触发)和非阻塞套接字创建一个多线程服务器。目前,我在主线程上创建了一个事件循环并等待通知,它可以正常工作。
我必须在以下两种方法之间进行选择,以使其支持多线程:
- 为每个线程创建一个事件循环,并将服务器套接字的文件描述符添加到每个线程上查找通知。(这是否可行?我的意思是:epoll是否支持线程安全?)
- 创建单个事件循环并等待通知。每当收到通知时,生成一个线程来处理。
如果我使用第一种方法,有可能多个线程会收到相同的事件通知吗?我应该如何处理这种情况?
哪种方法最好呢? 谢谢。
epoll
是线程安全的。是的,你可以这么做。只需搜索相关详细信息,在 Stack Overflow 和 Google 上都能找到这些信息。 - user405725