Você pode evitar o bloqueio garantindo que vários segmentos não acessem a mesma memória?

Digamos que eu tenha uma matriz grande e quero processar o conteúdo com vários segmentos. Se eu delegar cada thread a uma seção específica, garantindo que não haja sobreposição, isso elimina qualquer necessidade de bloqueio, supondo que os threads não acessem nenhuma outra memória fora da matriz?

Algo parecido com isto (pseudo-código):

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
}

questionAnswers(5)

yourAnswerToTheQuestion