Sekcje krytyczne podczas odczytu zmiennej

0

Cześć, nie mogę znaleźć jednoznacznej odpowiedzi na to pytanie. Więc. Jeśli dwa wątki ODCZYTUJĄ wartość jednej zmiennej, czy muszę stosować sekcje krytyczne?
Jeśli jeden z nich zmienia wartość zmiennej - sprawa jest jasna. Ale, gdy oba tylko odczytują? Jak to jest w rzeczywistości?

Przykład.
Zmienna tab to tablica rekordów. Dwa wątki muszą ją przeiterować i w pewnych warunkach coś wykonać(co wykonać, to już nie jest istotne).

wątek 1:

for i:=low(tab) to high(tab)
  if tab[i].field1 = 5 then...

wątek 2:

for i:=low(tab) to high(tab)
  if tab[i].field2 = 'abc' then...

Czy w takim wypadku iteracja tablicy tab powinna odbyć się w sekcji krytycznej, czy nie? A jeśli oba wątki sprawdzają pole field1? Czy wtedy jest różnica?

0

Nie ma potrzeby synchronizacji jeśli dane są tylko odczytywane.

0

Ale jakiś wątek powinien je zapisywać, czyż nie?

1

Rozwijając: jeśli dane są wypełniane na początku, a potem dopiero startują wątki czytające to nie trzeba nic blokować ani synchronizować.
Ale jeśli jednocześnie ktoś może pisać i czytać to trzeba to odpowiednio zaprogramować. W tym przypadku to klasyczny przypadek problemu czytelników i pisarzy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1