Можете ли вы избежать блокировки, гарантируя, что несколько потоков не будут обращаться к одной и той же памяти?

Скажем, у меня большой массив, и я хочу обработать содержимое несколькими потоками. Если я делегирую каждый поток определенному разделу, не гарантируя перекрытия, устраняет ли это необходимость блокировки, предполагая, что потоки неТ доступ к любой другой памяти за пределами массива?

Примерно так (псевдокод):

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
}

Ответы на вопрос(5)

Ваш ответ на вопрос