Mam tablicę, która zawiera wartości całkowite zadeklarowane tak:Czy jednoczesne odczyty z tablicy są bezpieczne dla wątków?
int data[] = new int[n];
Każda wartość musi być przetwarzane i jestem podział pracy na kawałki tak, że może być przetwarzany przez osobne wątki. Tablica nie zostanie zmodyfikowana podczas przetwarzania.
Czy wszystkie wątki przetwarzania mogą jednocześnie pobierać oddzielne części tablicy? Czy muszę użyć blokady?
Innymi słowy: czy to zamówienie jest bezpieczne w pracy?
Array is created and filled
Threads are created and started
Thread 0 reads data[0..3]
Thread 1 reads data[4..7]
Thread 2 reads data[8..n]
Dowolna liczba wątków może odczytywać wartości. Sekcje krytyczne mają znaczenie tylko w przypadku pisania. – Jyro117
@ Jyro117 lub czytanie! Iteracja nad strukturą powinna być zsynchronizowana. –
Jeśli twoja struktura jest traktowana jako niezmienna, tzn. Nie zapisuje danych wewnątrz lub samej struktury, nie musisz jej synchronizować. O ile twoja struktura się nie zmienia, kiedy czytasz z niego, ale w przypadku tablic, które nigdy się nie zdarzają. – Jyro117