¿Puede evitar el bloqueo garantizando que varios subprocesos no accederán a la misma memoria?

Digamos que tengo una gran matriz y quiero procesar el contenido con múltiples subprocesos. Si delego cada hilo a una sección específica, garantizando que no se superponga, ¿eso elimina cualquier necesidad de bloqueo, asumiendo que los hilos no acceden a ninguna otra memoria fuera de la matriz?

Algo así (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
}

Respuestas a la pregunta(5)

Su respuesta a la pregunta