[so] handler pentru semnale

Cristian Zamfir so@atlantis.cs.pub.ro
Mon, 8 Dec 2003 11:00:39 +0200


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. 
 
2.Ce se intimpla in cazul in care doua cereri asincrone asociate aceluiasi 
thread se termina cam in acelasi timp?