Скажем, у меня большой массив, и я хочу обработать содержимое несколькими потоками. Если я делегирую каждый поток в определенном разделе, гарантируя отсутствие перекрытия, это устраняет необходимость блокировки, если потоки не имеют доступа к какой-либо другой памяти вне массива?
Что-то вроде этого (псевдокод):
global array[9000000];
do_something(chunk) {
for (i = chunk.start; i < chunk.end; i++)
//do something with array
}
main() {
chunk1 = {start: 0, end: 5000000};
chunk2 = {start: 5000000, end: 9000000};
start_thread(thread1, do_something(chunk1));
start_thread(thread2, do_something(chunk2));
wait_for_join(thread1);
wait_for_join(thread2);
//do something else with the altered array
}