我可以保持线程活动并为其提供其他工作负载吗?

时间:2011-10-22 13:06:31

标签: c linux pthreads

假设我使用pthreads创建线程,是否可以在 >初始化之后向他们发送新内容,因此我不会浪费资源来创建新线程?例如,我创建3个线程,线程2信号完成,我发送另一个“任务”而不杀死它并开始一个新任务。感谢。

4 个答案:

答案 0 :(得分:5)

通常的简单形式是普通(工作)queue。原则上,您可以维护一个队列结构,可能是链接列表,受互斥锁保护。通常,主要/生产者线程使用condition variables来通知工作线程新工作可用,因此他们不必轮询。

以前可能有用的一些SO问题是:

答案 1 :(得分:3)

是的,这就像Apache这样的服务器可以提高性能。设计模式称为Thread pool pattern,并且使用pthreads有各种实现(例如this one)。

当然,您可能希望尽可能简化实施,具体取决于您的目标。

答案 2 :(得分:0)

当然。例如,您可以使用生产者 - 消费者模式。这是example in C#,但也可以在pthreads中轻松实现。

答案 3 :(得分:0)

您问题的search-keyword是“线程池”或“线程池”。使用此术语,您可以在本网站以及Google中找到大量信息。