Я пытаюсь распараллелить операцию, используя pthreads. Процесс выглядит примерно так:
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, но работал с разными частями массива. Чтобы избежать проблем при работе с перекрывающимися частями, мне нужно заблокировать часть памяти.
Как создать мьютекс (или что-то еще), который блокирует только часть массива?