我有一个正在处理的应用程序需要几个辅助线程,每个辅助线程将负责多个文件句柄(至少 1 个,超过 10 个)。文件句柄不在线程之间共享,因此我不必担心一个辅助线程会在select
查看准备好读/写的内容时阻塞另一个线程。我要确定的是,在执行select
/pselect
调用时,两个辅助线程都不会导致主线程停止执行。
我想这不是问题——人们会想像这样的事情会在网络服务器中完成——但是当我用谷歌搜索时,我找不到任何特别说“是的,你可以做到这一点”的东西。我的假设是否正确,这不会引起任何问题?
为了澄清起见,我所拥有的看起来像:
执行的主线程(
select()
循环处理传入的命令消息和传出的响应)辅助线程#1(
select()
提供服务的循环)辅助线程#2(
select()
循环提供另一个服务)
正如我之前提到的,没有一个文件句柄在线程之间共享——它们是在一个单独的线程中创建、使用和销毁的,而其他线程不知道它们的存在。