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