[so] handler pentru semnale
Octavian Purdila
so@atlantis.cs.pub.ro
Mon, 08 Dec 2003 11:46:39 +0200
On Mon, 8 Dec 2003 11:00:39 +0200, Cristian Zamfir <zamfir@fx.ro> wrote:
> 1. Daca folosim un handler pentru semnalele care apar cind se termina o
> operatie asincrona, nu imi dau seama cum putem sa sincronizam apelarea
> handlerului cu threadul nostru.
> Ma gindesc la urmatorul scenariu: Threadul care face cererile aio tocmai
> modifica ceva in coada de cereri (sa zicem un delete ca urmare a
> terminarii
> cu succes a unei alte cereri). Tocmai in mijlocul operatiei se termina o
> alta
> operatie asincrona si se executa handler-ul pentru acel semnal, de catre
> acest thread. Handlerul va face astfel acces nesincronizat la un anumit
> index
> din coada (sa zicem ca primeste indexul ca parametru in structura
> siginfo_t).
> Pe linga faptul ca indexul ar putea sa nu mai fie consistent, chiar si
> coada
> ar putea sa nu mai fie, pentru ca tocmai se executa o operatie delete, si
> cozile de obicei se fac cu liste inlantuite. Chiar daca sincronizam in
> interiorul handler-ului accesul la coada, printr-un semafor, indexul,
> care e
> primit ca parametru si nu poate sa fie sincronizat poate sa fie
> inconsistent.
>
Poti sa blochezi semnalele in sectiunea critica.
> 2.Ce se intimpla in cazul in care doua cereri asincrone asociate
> aceluiasi thread se termina cam in acelasi timp?
>
Nimic special. Se genereaza doua semnale. Ca sa nu pierzi semnale,
e recomandata sa folositi semnale realtime.
tavi