有人可以通过将以下类型的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];
});
答案 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 )