我有这段代码:
Matrix mat;
for (int y=0; y<n; ++y)
{
for (int x=0; x<m; ++x)
{
// do some small operation on mat(y,x)
}
};
串行计算非常慢(这个双循环称为500-1000次),所以作为第一步,我想将它与dispatch_apply
并行化。
Matrix mat;
dispatch_apply(PATCH_SIZE, _queue, ^(size_t y)
{
for (int x=0; x<m; ++x)
{
// do some small operation on mat(y,x)
}
});
问题在于变量mat
,它在块内定义为只读。有没有办法解决这个问题?
答案 0 :(得分:1)
如果您希望变量(ref)可以在块中写入,则可以在其前面添加__block
。
例如,__block Matrix mat;
答案 1 :(得分:0)
您可以尝试将mat声明为__block Matrix mat;