[so] tema 4 strikes back

Petre Razvan so@cursuri.cs.pub.ro
Thu, 30 Dec 2004 03:50:39 -0800 (PST)


--0-2061983782-1104407439=:50110
Content-Type: text/plain; charset=us-ascii

Salut,
 
Iti voi da mai jos niste franturi de cod care sper sa te lamureasca. Dar sa stii ca George a explicat foarte bine in mailul anterior mecanismul pe care ai putea sa-l folosesti. Sper sa iti fie de folos.
 
Uite niste franturi de cod:
Pastrez intr-un vector niste informatii utile despre fiecare thread de tip a/b, printre care si structura aiocb.
Pt threadurile de tip a setez campurile acestei structuri astfel:
// setez structura aiocb
my_aiocb.aio_sigevent.sigev_notify = SIGEV_SIGNAL;
my_aiocb.aio_sigevent.sigev_signo = SIGUSR2;
new->my_aiocb = my_aiocb;

// transmit id-ul threadului odata cu semnalul (unde id poate fi ce ai tu chef, in cazul meu e indicele din tabela)
nod->my_aiocb.aio_sigevent.sigev_value.sival_int = id;

Scrii un handle de genul celui de mai jos, in care obtii valoarea id-ul trimis odata cu semnalul
void handlerSemnale(int signum, siginfo_t *info, void *param)
{
 id = info->si_value.sival_int; // e exact id-ul pe care il setezi tu mai sus
}


Dorin Cristescu <io6425829@yahoo.com> wrote:
Saluty
Da, consultasem problema si eram de acord si la curent
cu ce propui numai ca eu semnalam o alta problema.
Corectati-ma daca am inteles gresit numai ca eu cam
asa am inteles ca se intampla cu aio. Nu stiu cine din
lowerlevel ma semnaleaza de terminarea operatiei
asincrone _ si nu eu _. Doar cand eu initiam semnalele
stiu ca puteam trimite cu sigqueue si deci sa pot
trimite informatii despre threadul apelant.
Eu nu am nici un control cand si cine face trimiterea
semnalului. Nu e asa?
Eu ce pot seta este handlerul care ar prelua
informatia si nu cine initiaza.

Multumesc




--- George Ciobanu wrote:

> Salut,
> 
> Odata cu semnalul tau, folosind structura aiocb se
> poate trimite o valoare atasata cu semnalul. Cred ca
> am mai raspuns odata la aceasta problema. Pana la
> urma o actiune de tratare a unui semnal nu se
> executa in contextul nici unui fir de executie.
> Singura utilitate ar fi intreruperea apelului de
> sistem blocant. 
> 
> Poti trimite ca o informatie utila un numar care sa
> indice ce fir de executie a trimis semnalul. Din
> acest moment, daca iti tii un tablou de valori utile
> pentru toate firele de executie poti face orice.(De
> exemplu sa semnalizezi un semafor asociat cu firul
> de executie respectiv).
> 
> George
> 
> Dorin Cristescu wrote:
> 
> 
> > George,
> > 
> > Sunt urmatoarele probleme __URÂTE_:
> > - pt threadurile tip a, semnalul care ar trebui sa
> > ne
> > spuna la sfarsitul operatiei asincrone la ce
> thread
> > se
> > refera e trimis de _sistem_ si nu de mine, deci nu
> > ii
> > pot spune ce valoarea sa transmita cu semnalul
> > - sa zicem ca-mi storc creierii si obtin sa trimit
> > un
> > semnal cu informatie utila dar ramane problema: eu
> > nu
> > am nici o posibilitate sa aflu cine primeste
> > mesajul.
> > pot doar cu sigwait in threadul initiator dar asta
> > inseamna ca nimeni altcineva nu va mai putea primi
> > un
> > semnal in acelasi timp cu aceeasi valoare deci
> s-ar
> > limita numarul de threaduri la numarul de semnale
> > adresabile
> > 
> > Sper c-am fost destul de elocvent(!).
> > 
> > multam si lamultam
> > 
> > ps. presupun ca aceleasi probleme spinoase se
> aplica
> > si la tratarea cu threaduri, dar nu am ajuns asa
> de
> > inainte cu scremerea implementarii
> > 
> > 
> 
> Bonsar,
> M-am adresat lui George fiindca stiam ca el e
> responsabil de si o sa corecteze tema, vazand si ca
> in
> mare parte el raspundea la threaduri.
> Acum insa se pare ca tace,
> Asa ca orice input este folositor si ii raman
> indatorat producatorului.
> 
> Multumesc.

=====
-------

Trece lebedele-n zare,
Eu ma uit, ele dispare


		
---------------------------------
Do you Yahoo!?
 All your favorites on one personal page – Try My Yahoo!
--0-2061983782-1104407439=:50110
Content-Type: text/html; charset=us-ascii

<DIV>Salut,</DIV>
<DIV>&nbsp;</DIV>
<DIV>Iti voi da mai jos niste franturi de cod care sper sa te lamureasca. Dar sa stii ca George a explicat foarte bine in mailul anterior mecanismul pe care ai putea sa-l folosesti. Sper sa iti fie de folos.</DIV>
<DIV>&nbsp;</DIV>
<DIV>Uite niste franturi de cod:</DIV>
<DIV>Pastrez intr-un vector niste informatii utile despre fiecare thread de tip a/b, printre care si structura aiocb.<BR>Pt threadurile de tip a setez campurile acestei structuri astfel:</DIV>
<DIV>// setez structura aiocb<BR>my_aiocb.aio_sigevent.sigev_notify = SIGEV_SIGNAL;<BR>my_aiocb.aio_sigevent.sigev_signo = SIGUSR2;<BR>new-&gt;my_aiocb = my_aiocb;</DIV>
<DIV><BR>// transmit id-ul threadului odata cu semnalul (unde id poate fi ce ai tu chef, in cazul meu e indicele din tabela)<BR>nod-&gt;my_aiocb.aio_sigevent.sigev_value.sival_int = id;</DIV>
<DIV><BR>Scrii un handle de genul celui de mai jos, in care obtii valoarea id-ul trimis odata cu semnalul<BR>void handlerSemnale(int signum, siginfo_t *info, void *param)<BR>{<BR>&nbsp;id = info-&gt;si_value.sival_int; // e exact id-ul pe care il setezi tu mai sus<BR>}<BR><BR><BR><B><I>Dorin Cristescu &lt;io6425829@yahoo.com&gt;</I></B> wrote:</DIV>
<BLOCKQUOTE class=replbq style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #1010ff 2px solid">Saluty<BR>Da, consultasem problema si eram de acord si la curent<BR>cu ce propui numai ca eu semnalam o alta problema.<BR>Corectati-ma daca am inteles gresit numai ca eu cam<BR>asa am inteles ca se intampla cu aio. Nu stiu cine din<BR>lowerlevel ma semnaleaza de terminarea operatiei<BR>asincrone _ si nu eu _. Doar cand eu initiam semnalele<BR>stiu ca puteam trimite cu sigqueue si deci sa pot<BR>trimite informatii despre threadul apelant.<BR>Eu nu am nici un control cand si cine face trimiterea<BR>semnalului. Nu e asa?<BR>Eu ce pot seta este handlerul care ar prelua<BR>informatia si nu cine initiaza.<BR><BR>Multumesc<BR><BR><BR><BR><BR>--- George Ciobanu <CDANGEORGE@YAHOO.COM>wrote:<BR><BR>&gt; Salut,<BR>&gt; <BR>&gt; Odata cu semnalul tau, folosind structura aiocb se<BR>&gt; poate trimite o valoare atasata cu semnalul. Cred ca<BR>&gt; am mai raspuns odata la aceasta problema. Pana
 la<BR>&gt; urma o actiune de tratare a unui semnal nu se<BR>&gt; executa in contextul nici unui fir de executie.<BR>&gt; Singura utilitate ar fi intreruperea apelului de<BR>&gt; sistem blocant. <BR>&gt; <BR>&gt; Poti trimite ca o informatie utila un numar care sa<BR>&gt; indice ce fir de executie a trimis semnalul. Din<BR>&gt; acest moment, daca iti tii un tablou de valori utile<BR>&gt; pentru toate firele de executie poti face orice.(De<BR>&gt; exemplu sa semnalizezi un semafor asociat cu firul<BR>&gt; de executie respectiv).<BR>&gt; <BR>&gt; George<BR>&gt; <BR>&gt; Dorin Cristescu <IO6425829@YAHOO.COM>wrote:<BR>&gt; <BR>&gt; <BR>&gt; &gt; George,<BR>&gt; &gt; <BR>&gt; &gt; Sunt urmatoarele probleme __URÂTE_:<BR>&gt; &gt; - pt threadurile tip a, semnalul care ar trebui sa<BR>&gt; &gt; ne<BR>&gt; &gt; spuna la sfarsitul operatiei asincrone la ce<BR>&gt; thread<BR>&gt; &gt; se<BR>&gt; &gt; refera e trimis de _sistem_ si nu de mine, deci nu<BR>&gt; &gt; ii<BR>&gt; &gt; pot spune ce
 valoarea sa transmita cu semnalul<BR>&gt; &gt; - sa zicem ca-mi storc creierii si obtin sa trimit<BR>&gt; &gt; un<BR>&gt; &gt; semnal cu informatie utila dar ramane problema: eu<BR>&gt; &gt; nu<BR>&gt; &gt; am nici o posibilitate sa aflu cine primeste<BR>&gt; &gt; mesajul.<BR>&gt; &gt; pot doar cu sigwait in threadul initiator dar asta<BR>&gt; &gt; inseamna ca nimeni altcineva nu va mai putea primi<BR>&gt; &gt; un<BR>&gt; &gt; semnal in acelasi timp cu aceeasi valoare deci<BR>&gt; s-ar<BR>&gt; &gt; limita numarul de threaduri la numarul de semnale<BR>&gt; &gt; adresabile<BR>&gt; &gt; <BR>&gt; &gt; Sper c-am fost destul de elocvent(!).<BR>&gt; &gt; <BR>&gt; &gt; multam si lamultam<BR>&gt; &gt; <BR>&gt; &gt; ps. presupun ca aceleasi probleme spinoase se<BR>&gt; aplica<BR>&gt; &gt; si la tratarea cu threaduri, dar nu am ajuns asa<BR>&gt; de<BR>&gt; &gt; inainte cu scremerea implementarii<BR>&gt; &gt; <BR>&gt; &gt; <BR>&gt; <BR>&gt; Bonsar,<BR>&gt; M-am adresat lui George fiindca stiam
 ca el e<BR>&gt; responsabil de si o sa corecteze tema, vazand si ca<BR>&gt; in<BR>&gt; mare parte el raspundea la threaduri.<BR>&gt; Acum insa se pare ca tace,<BR>&gt; Asa ca orice input este folositor si ii raman<BR>&gt; indatorat producatorului.<BR>&gt; <BR>&gt; Multumesc.<BR><BR>=====<BR>-------<BR><BR>Trece lebedele-n zare,<BR>Eu ma uit, ele dispare<BR><BR></BLOCKQUOTE><p>
		<hr size=1>Do you Yahoo!?<br> 
All your favorites on one personal page – <a href="http://my.yahoo.com">Try My Yahoo!</a>
--0-2061983782-1104407439=:50110--