多线程Web服务器的线程池

时间:2013-11-05 00:37:52

标签: c multithreading pthreads queue threadpool

我想编写一个多线程的Web服务器,我应该使用一个线程池。我可以使用队列进行线程池,如果是,你建议队列是循环还是说双链表?哪一个对我的Web服务器实现更好?如果队列不是一个好的选择,那么建议为线程池使用什么数据结构?

1 个答案:

答案 0 :(得分:1)

您可以使用任何线程安全的队列。 但是如果该Web服务器将处于重负荷状态,那么最好使用基于数组的无锁队列,这样您有时只需要分配数组,(michael和scott的队列基于节点,所以天真的实现你必须在每次进行排队时分配节点,并在出队时释放它们。 (所以回答一下,基于数组的队列(而不是deques)在我看来更好,因为它们在不同的任务中是公平的。)

我建议您使用队列,而不是deque。 (尽管工作偷窃使用了双端队列,但你希望公平地参与客户端。所以一个双端队列,因为ot的行为就像一个堆栈,第一个请求将是最后一个回答。) 您可以看到此页面的无锁并发队列(这是我认为的最新技术) http://mcg.cs.tau.ac.il/projects/lcrq/