【发布时间】:2011-02-16 16:00:06
【问题描述】:
我正在尝试使用 pthread 并行化操作。该过程类似于:
double* doSomething( .... ) {
double* foo;
foo = new double[220];
for(i = 0; i<20; i++)
{
//do something with the elements in foo located between 10*i and 10*(i+2)
}
return foo;
}
for 循环中发生的事情可以按任何顺序完成,所以我想使用线程来组织它。
例如,我可以使用多个线程,这样每个线程都通过部分 for 循环,但在数组的不同部分工作。为了避免在处理重叠部分时出现问题,我需要锁定一些内存。
我怎样才能创建一个只锁定部分数组的互斥体(或其他东西)?
【问题讨论】:
-
您真的是要让数据部分重叠吗? [0,20), [10,30), [20,40), ..., [190,210)?或者你的意思是不重叠: for(i=0; i