Sobes.tech
Junior — Middle

Koje posledice se mogu očekivati ako u Go režimu jedna gorutina koristi više Reader-a, a druga Writer koji blokira izvršenje?

sobes.tech АИ

Одговор од АИ

Ako u Go režimu (na primer, pri korišćenju sync.RWMutex) jedna gorutina koristi više Reader-a, a druga Writer, koji blokira izvršenje, mogu nastati sledeće posledice:

  • Čitanje ne blokira ostale čitaoce: nekoliko gorutina može istovremeno držati read lock, što omogućava paralelno čitanje.

  • Pisanje blokira čitanje i ostale pisanja: kada Writer pokuša da dobije write lock, čekat će dok svi trenutni Reader-i ne oslobode lock.

  • Writer blokira nove čitaoce: nakon što Writer počne da čeka, novi Reader-i neće moći da dobiju read lock, kako bi se izbeglo "zauzimanje" resursa od strane čitaoca.

  • Moguće blokade (starvation): ako se stalno pojavljuju novi Reader-i, Writer može dugo čekati, što dovodi do kašnjenja.

  • Potencijalni deadlock-ovi: javljaju se ako gorutina sa write lock pokušava da dobije read lock ili obrnuto.

Stoga, pri istovremenom korišćenju više Reader-a i jednog Writer-a, važno je pravilno projektovati logiku sinhronizacije kako bi se izbegle blokade i obezbedio ispravan pristup podacima.