将任务划分为子任务并分配给线程池

时间:2019-05-30 11:17:26

标签: visual-c++ mfc

我正在尝试读取图像以操纵像素数据(高斯或其他任何像素)并将像素写入新图像。由于图像尺寸较大(> 1GB,甚至可能大于20GB),因此我读取了它们一次在整个宽度上一次排成一行。因此它变得逐块读取。现在我的工作需要更快的机制来完成整个过程。线程池将是一种有效的解决方案。我不能使用其他库来进行图像处理,为此制造的引擎。

我已经从代码项目中引用了一个示例线程池示例,并且正在读取线程的run函数中的图像,但是我真的不确定它是如何工作的。

HRESULT hRes = m_ObjPool.Init(10, 100); //spawning the thread
void CThreadObject::Run(CThreadPoolThreadCallback &pool)
{
    //I read and write my image here using for loop
    for(int i=0;i<nImageHeight;++i)
    {
        for(int j=0;j<nImageWidth;j++)
        {
            Engine.ReadImage(params);
        }
    }
 }

我要在此处实现的目标是,如果将图像分为10或100个部分(取决于图像大小和块大小),如何将任务分配给线程池。

0 个答案:

没有答案