【发布时间】:2011-06-18 21:16:23
【问题描述】:
我有一个 c/c++ 进程,它有一个很长的队列,这个队列中的每个元素都需要 发送到多个(TCP)服务器。单线程是一个可行的选项,但它很慢。
我需要实现一个多线程解决方案。我的进程事先不知道编号 服务器。第一个想法是为每个服务器创建一个线程。管理器线程读取 队列中的新元素找到目的地并分派到与目的地匹配的线程。
一个重要的注意事项。工作可能是依赖的。如果job_5没有完成,我不想执行job_10。需要维持秩序。
首先,我想听听您对这个问题的看法。其次,我正在寻找 C++ 实现以供参考。第三,我正在寻找描述类似问题的书籍/资料。
【问题讨论】:
-
你是什么意思?用于新连接的分叉?
-
这个问题的真正解决方案是Asynchronous IO
-
我建议查找线程池。 “多线程”的概念通常被认为是每个客户端线程。线程池是一种有效的方式来摆脱你可能并不总是需要的线程。
-
@RageD:我认为在这种情况下线程池是一个实现细节。它确实与性能有关,这是最初的动机,但我认为我们仍处于设计阶段,可以公平地假设池实现相对可插入。
标签: c++ c multithreading pthreads threadpool