dispatch_apply GCD for'for loop'

时间:2014-03-21 00:31:04

标签: c++ ios for-loop parallel-processing grand-central-dispatch

有人可以通过将以下类型的for循环格式化为GCD dispatch_apply查询来帮助我吗?

for (y = a; y + b < h - c; y += d)
{
    // body independent of y
    *m++ = *n++ - *p++; 
}

其中*m*n*p是浮点指针

dispatch_apply API具有以下描述:

dispatch_apply(<#size_t iterations#>, <#dispatch_queue_t queue#>, <#^(size_t)block#>)

这可能更像是一个数学难题,但任何帮助都会很棒!

感谢。

编辑:我的工作如下:

dispatch_apply((h-c-b-a)/d + 1, someQueue, ^(size_t blkId){
    m[blkId] = n[blkId] - p[blkId];
});

1 个答案:

答案 0 :(得分:2)

dispatch_apply((h - c - b - a + d - 1)/d, dispatch_main(), ^(blkId) {
    m[blkId] = n[blkId] - p[blkId]
});

更新:以下内容应该具有相同的结果

dispatch_apply(ceil((double)(h - c - b - a) / d ), dispatch_main(), ^(blkId) {
    m[blkId] = n[blkId] - p[blkId]
});

在第一个版本中,我使用了(int)ceil( x / y ) == (int)( x + y - 1 / y )