软件开发随笔:用C++写一个计算密集型适用的自适应线程池

在将算法配置到工程的时候,或者在验证自身算法的过程中,经常会遇到耗时较长的运算卡住流程的脖子,尤其是串行执行的一系列运算。举一个可能引起大家共鸣的例子,我们需要对一个文件夹中的所有图片提取特征,串行计算将会十分痛苦,用并行则更加合适。作为一个会算法的软件工程师,自然要在最快的时间内实现一个能用的线程池demo。

在线程池中,如果为了保守创建较少的线程数,则不能充分利用性能;而创建过多的线程数会有可能在我们使用别的进程时,出现CPU的调度延迟导致缓慢,因为我们的任务是计算密集型,计算时会占用一整个核。在这里我使用一个多余的线程来监听CPU的状态,让线程池可以根据CPU占用率灵活控制本进程的计算量,在最大程度榨取计算机性能的同时保证用户对机器的其他基本操作。

另一个问题,如果我们希望该线程池作为基本的utils,适用于不同模块,它需要兼容静态函数、成员函数以及不同数量的形参。

在此我设计了一个简单的线程池,将它称呼为“计算池”似乎更加合适~

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年9月7日
下一篇 2022年9月7日

相关推荐