Citat:
Dragi Tata:
Međutim, ovo rešenje ne važi za sve Unixoide: kod nekih od njih bi se desilo da se probude sve niti (procesi) koji zovu accept i onda nastaje problem koji se popularno naziva thundering herd, a kod nekih verzija će aplikacija jednostavno da "pukne". Više detalja možete naći u knjizi koju sam gore pomenuo.
Pa nista, specijalno u principu radi se o jednoj kriticnoj sekciji(CS).
CS(nemoj neko da mi je pomislio da je rec o counter stike-u :) ) je deo programa u kojem sme da bude samo jedan proces, ukoliko se u tom delu programa nadju dva ili vise procesa kola krecu nizbrdo, ovim problemom bavili su se ljudi pocetkom 60 tih godina proslog veka. Unutar Sys V interprocesne komunikacije postoje semafore, koje regulisu pristup kriticnim sekcijama(man semop). S tim sto su semafore malo uopstenje kriticne sekcije jer dozvoljavaju da ogranicite broj procesa koji sme da udje istovremeno u kriticnu sekciju.
za detalje oko semafora pogledajte (man semop). Medjutim ukoliko vas UNIX ne podrzava semafore kao sistemski poziv uvek mozete umesto semafore da ekskluzivno kreitrate datoteke i na taj nacin kontorlisete ko moze da udje a ko mora da saceka. Uz primere koje sam na pocetku poslao pogledajte program shmchat.c jer se u tom primeru koriste semafore. (gde P; u programu oznacava ulazak u kriticnu sekciju a V; izlazak iz kriticne sekcije)
e pa da se vratimo na nas accpet, posto on na neki nacin moze da se smatra kriticnom sekcijom svesto bi trebalo uraditi jeste
P
accept
V
i stvar je resena, ukoliko neko pokusa da udje u kriticnu sekciju dok ona nije slobodna, taj proces se "zaspati" i probuiti se kada bude bio moguc ulazak u kriticnu sekciju.