【发布时间】:2013-01-13 03:17:36
【问题描述】:
我正在使用 epoll(边缘触发)和非阻塞套接字创建一个多线程服务器。目前我正在主线程上创建一个事件循环并等待通知,它可以正常工作
我必须在两种方法之间进行选择以使其成为多线程:
- 为每个线程创建一个事件循环并添加服务器套接字的文件描述符以查找每个线程上的通知。 (这可能吗?我的意思是:epoll 线程安全吗?)
- 创建单个事件循环并等待通知。每当收到通知时,都会产生一个线程来处理它。
如果我使用第一种方法,是否有机会让多个线程收到相同事件的通知?我该如何处理这种情况?
最好的方法是什么? 谢谢。
【问题讨论】:
-
是的,
epoll是线程安全的。是的,你可以做到。只需四处搜索详细信息,SO 和 Google 都充满了这些信息。 -
谢谢。我也想知道是否可以将相同的文件描述符添加到多个 epoll 循环中。我可以吗?
标签: c linux multithreading sockets epoll