Wil*_*ill 0 c io pthreads multiplexing
我有一个我正在处理的应用程序需要几个辅助线程,每个应用程序都要负责一些文件句柄(至少1个,超过10个).文件句柄不在线程之间共享,因此我不必担心一个辅助线程在select查看准备读/写的内容时阻塞另一个.我想要确定的是,在执行select/ pselectcall时,两个辅助线程都不会导致主线程停止执行.
我认为这不是一个问题 - 人们可以想象这样的事情会在网络服务器上完成 - 但我找不到任何具体说"是的,你可以这样做",当我用Google搜索时.我是否认为这不会导致任何问题?
为了澄清,我看到的是:
主要执行线程(select()循环处理传入命令消息和传出响应)
辅助线程#1(select()提供服务的循环)
辅助线程#2(select()提供另一个服务的循环)
正如我之前提到的,没有一个文件句柄在线程之间共享 - 它们是在一个单独的线程中创建,使用和销毁的,其他线程不知道它们的存在.
不,你不必担心他们阻止主线程.我在各种项目中使用了多个线程中的select.只要它们具有不同的FDSETS,那么你就可以了,并且每个都可以像独立的事件循环一样使用.