您建议在C中使用pthreads线程池进行哪些开源实现?
此实施的附加要点是:
答案 0 :(得分:22)
我致力于制作我能够使用的东西,并且我已经在github上发布了它:它被称为threadpool。
答案 1 :(得分:9)
如果你的目标是轻量级,那么你想要的最后一件事就是预先编写的,超级通用的,基于高级抽象的实现。自己实现一个适合你的特定任务的线程池是相当简单的,但你也可能会质疑你是否真的需要一个线程池,或者你是否可以根据需要创建和销毁线程。
在不了解有关您的申请的更多细节的情况下,我无法提供更具体的建议。但您可能会发现有用的工具是:
答案 2 :(得分:3)
Here is an implementation具有以下功能:
答案 3 :(得分:2)
我曾经使用this,这本身并不是官方实施。它确实按照你的要求使用pthreads,并且应该给你一些你需要做的事情的想法。 (有关如何编译的说明,请参阅threadpool.h
,threadpool.c
,threadpool_test.c
和Makefile
。)您显然必须进行一些重构it's original intention可能与你的不同。它实际上评论得相当好。
尽管这偏离了原来的问题,我还想提一下,最新的C标准,非正式的C1X(参见维基百科,超链接限制),已计划支持线程N1570(google it,超链接限制再次!) (15年7月31日)。
根据我的经验,一些个人建议是确保您的应用程序可以实际并行运行,如果创建新线程的开销太高而不能没有一个线程池。就我个人而言,我在这两个部分都犯了错误,实际上我的实现比单线程应用程序慢。此外,您可能希望了解不同的问题,包括缓存锁定和未命中,这实际上会降低应用程序的性能。
我现在可能正在喋喋不休,但祝你好运。