[so] nelamurire privind asincr.

George Ciobanu so@atlantis.cs.pub.ro
Sun, 7 Dec 2003 08:34:39 -0800 (PST)


--0-65181631-1070814879=:88262
Content-Type: text/plain; charset=us-ascii

Salut, 
 
1. In cazul temei veti folosi notificarea prin semnale. Ce era in paranteze era o observatie ...
Aveti grija ca se pot pierde semnale. In acest caz eroarea (returnata de aio_error) este setata in mod corespunzator iar aio_return va returna -1. 
2. Ramane la alegerea ta cum rezolvi aceasta problema. (Daca spargi in bucati ,cel mai simplu ar fi  sa citesti cate o bucata si sa o  scrii. ) Rezolvarea tb specificata in README


Cristian Zamfir <zamfir@fx.ro> wrote:
On Sunday 07 December 2003 17:23, George Ciobanu wrote:

Nedumeriri:

a) Sa inteleg din raspunsul la intrebarea 1 ca putem sa folosim optiunea cu 
SIGEV_THREAD pentru threadurile de tip a). In cazul asta vad ca se creeaza un 
thread nou si nu stiu daca mai e nevoie de semnale, cum e precizat in enuntul 
temei.


'struct sigevent aio_sigevent'
This element specifies how the calling process is notified
once the operation terminates. If the `sigev_notify' element
is `SIGEV_NONE', no notification is sent. If it is
`SIGEV_SIGNAL', the signal determined by `sigev_signo' is
sent. Otherwise, `sigev_notify' must be `SIGEV_THREAD'. In
this case, a thread is created which starts executing the
function pointed to by `sigev_notify_function'.

b) In enunt nu se precizeaza daca fisierele au o lungime maxima, iar in caz ca 
se poate orice lungime, care e politica care trebuie implementata? 
Sa ziceam ca avem de facut aio_read, si avind in vedere ca nu se stie ordinea 
in care sunt solutionate cererile AIO, este posibil ca pachetele sa ajunga in 
alta ordine la client si unul dintre server si client ar trebui sa 
reinventeze partea din tcp legata de reordonarea pachetelor.
Daca asteptam sa se execute aio_read pentru fiecare bucatica din fisierul 
cerut, si apoi facem un aio_read pentru urmatoarea bucatica, se complica 
implementarea cozii sau pipe-ului pentru comunicarea intre worker-thread-uri 
si threadul principal al serverului.

Multumesc



> Toma Monica wrote:
>
> Multumesc de raspuns, insa mai sunt ceva pb care mi-au
> ramas neclare :).
>
> 1. Practic thread-urile worker vor trata cererile care
> le sunt asignate de server secvential, doar ca
> operatiile de citire/scriere se fac asincron?
>
> Dat fiind ca in server dai intr-un singur loc dai accept cererile vor fi
> secventializate oricum. Cererile nu sunt tratate secevential; ele vor fi
> pornite de folosind operatii operatii asincrone. Daca se termina mai multe
> in acelasi timp poti sa secventializezi raspunsurile ( desi pe linux, daca
> folosesti notificare folosind thread-uri ar putea raspunde chiar ele)
>
>
>
> 2. Thread-urile de tip a/b trebuie sa poata sa execute
> mai multe operatii in acelasi timp, pe mai multe
> fisiere?
>
> Da
>
> 3. Thread-urile trebuie sa fie pornite tot timpul,
> adica la lansarea server-ului sa se creeze toate
> thread-urile worker ( sugestia ne-a fost data la
> laborator) sau in momentul in care vine o cerere si
> exista un "loc liber" sa se lanseze un thread
> corespunzator operatiei, care sa se termine in
> momentul in care s-a incheiat operatia pe care o
> executa?
>
>
> Crearea lor se face la inceput. Oprirea lor se face numai atunci cand se
> opreste serverul (deci, in cazul nostru cam niciodata)
>
> --- George Ciobanu wrote:
> > Salut,
> >
> > Serverul ar trebui sa faca numai load balancing;
> > deci un thread de tip ls tb sa trimita raspunsul
> > singur la client fara participarea serverului. E ok
> > ca threadul de tip ls sa poata prelua numai o
> > operatie la un moment dat, dar tb sa te asiguri ca
> > serverul nu se blocheaza ( serverul poate trimite
> > toate cele 5 cereri, iar threadul respectiv le
> > trateaza secvential)
> > Partea de asincronism este impusa numai pentru
> > celelalte doua tipuri de threaduri. Dar, ca raspuns
> > la intrebarea ta asincronismul implica apeluri
> > neblocante.
> >
> > Toma Monica wrote:
> >
> > Buna, am si eu cateva nelamuriri, si desi risc sa
> > par
> > stupida, nu am gasit pe nimeni care sa poate sa imi
> > fie de ajutor...
> > Iata care sunt problemele mele:
> >
> > 1. sa presupunem ca avem 5 clienti care se se
> > conecteaza la server pt a cere un ls, iar serverul
> > dispune doar de un thread care face aceasta
> > operatie.
> > Eu am ales ca serverul ( thread-ul principal) sa
> > comunica cu thread-urile worker (prin care executa
> > operatiile) folosind pipe-uri. Ideea e ca citirea de
> > pe pipe am facut-o cu read(blocant) adica un thread
> > worker al serverului isi verifica pipe-ul si dc are
> > operatie o citeste de pe pipe si o executa, deci un
> > thread va putea executa la un moment dat numai o
> > operatie din cele care ii sunt asignate de server ->
> > contravine aceasta metoda cu ideea de asincron?
> > Revenind la cei 5 clienti, dupa ce se obtine
> > rezultatul listarii, acesta trebuie trimis la
> > clienti.Rezultatul este memorat pe server intr-un
> > fisier si apoi citit si trimis la client. Trebuie
> > aceasta citire sa fie si ea asincrona?
> >
> > Probabil voi astepta raspuns la aceasta intrebare
> > inainte sa mai inaintez si altele. S-ar putea sa ma
> > lamuresc.
> >
> > Se poate folosi functia sprintf?
> >
> > Da
> >
> >
> >
> > =====
> >
> > I dream of finding myself laughing!
> >
> >
> > __________________________________
> > Do you Yahoo!?
> > New Yahoo! Photos - easier uploading and sharing.
> > http://photos.yahoo.com/
> > _______________________________________________
> > so mailing list
> > so@atlantis.cs.pub.ro
>
> http://atlantis.cs.pub.ro/cgi-bin/mailman/listinfo/so
>
> > ---------------------------------
> > Do you Yahoo!?
> > New Yahoo! Photos - easier uploading and sharing
>
> =====
>
> I dream of finding myself laughing!
>
>
> __________________________________
> Do you Yahoo!?
> New Yahoo! Photos - easier uploading and sharing.
> http://photos.yahoo.com/
> _______________________________________________
> so mailing list
> so@atlantis.cs.pub.ro
> http://atlantis.cs.pub.ro/cgi-bin/mailman/listinfo/so
>
>
>
> ---------------------------------
> Do you Yahoo!?
> New Yahoo! Photos - easier uploading and sharing

_______________________________________________
so mailing list
so@atlantis.cs.pub.ro
http://atlantis.cs.pub.ro/cgi-bin/mailman/listinfo/so

---------------------------------
Do you Yahoo!?
New Yahoo! Photos - easier uploading and sharing
--0-65181631-1070814879=:88262
Content-Type: text/html; charset=us-ascii

<DIV>Salut, </DIV>
<DIV>&nbsp;</DIV>
<DIV>1. In cazul temei veti folosi notificarea prin semnale. Ce era in paranteze era o observatie ...</DIV>
<DIV><STRONG>Aveti grija ca se pot pierde semnale. In acest caz eroarea (returnata de aio_error) este setata in mod corespunzator&nbsp;iar aio_return va returna -1.</STRONG> </DIV>
<DIV>2. Ramane la alegerea ta cum rezolvi aceasta problema. (Daca spargi in bucati ,cel mai simplu ar fi &nbsp;sa citesti cate o bucata si sa o &nbsp;scrii.&nbsp;) Rezolvarea tb specificata in README</DIV>
<DIV><BR><BR><B><I>Cristian Zamfir &lt;zamfir@fx.ro&gt;</I></B> wrote:</DIV>
<BLOCKQUOTE class=replbq style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #1010ff 2px solid">On Sunday 07 December 2003 17:23, George Ciobanu wrote:<BR><BR>Nedumeriri:<BR><BR>a) Sa inteleg din raspunsul la intrebarea 1 ca putem sa folosim optiunea cu <BR>SIGEV_THREAD pentru threadurile de tip a). In cazul asta vad ca se creeaza un <BR>thread nou si nu stiu daca mai e nevoie de semnale, cum e precizat in enuntul <BR>temei.<BR><BR><BR>'struct sigevent aio_sigevent'<BR>This element specifies how the calling process is notified<BR>once the operation terminates. If the `sigev_notify' element<BR>is `SIGEV_NONE', no notification is sent. If it is<BR>`SIGEV_SIGNAL', the signal determined by `sigev_signo' is<BR>sent. Otherwise, `sigev_notify' must be `SIGEV_THREAD'. In<BR>this case, a thread is created which starts executing the<BR>function pointed to by `sigev_notify_function'.<BR><BR>b) In enunt nu se precizeaza daca fisierele au o lungime maxima, iar in caz ca <BR>se poate orice
 lungime, care e politica care trebuie implementata? <BR>Sa ziceam ca avem de facut aio_read, si avind in vedere ca nu se stie ordinea <BR>in care sunt solutionate cererile AIO, este posibil ca pachetele sa ajunga in <BR>alta ordine la client si unul dintre server si client ar trebui sa <BR>reinventeze partea din tcp legata de reordonarea pachetelor.<BR>Daca asteptam sa se execute aio_read pentru fiecare bucatica din fisierul <BR>cerut, si apoi facem un aio_read pentru urmatoarea bucatica, se complica <BR>implementarea cozii sau pipe-ului pentru comunicarea intre worker-thread-uri <BR>si threadul principal al serverului.<BR><BR>Multumesc<BR><BR><BR><BR>&gt; Toma Monica <MONIQQUS@YAHOO.COM>wrote:<BR>&gt;<BR>&gt; Multumesc de raspuns, insa mai sunt ceva pb care mi-au<BR>&gt; ramas neclare :).<BR>&gt;<BR>&gt; 1. Practic thread-urile worker vor trata cererile care<BR>&gt; le sunt asignate de server secvential, doar ca<BR>&gt; operatiile de citire/scriere se fac asincron?<BR>&gt;<BR>&gt;
 Dat fiind ca in server dai intr-un singur loc dai accept cererile vor fi<BR>&gt; secventializate oricum. Cererile nu sunt tratate secevential; ele vor fi<BR>&gt; pornite de folosind operatii operatii asincrone. Daca se termina mai multe<BR>&gt; in acelasi timp poti sa secventializezi raspunsurile ( desi pe linux, daca<BR>&gt; folosesti notificare folosind thread-uri ar putea raspunde chiar ele)<BR>&gt;<BR>&gt;<BR>&gt;<BR>&gt; 2. Thread-urile de tip a/b trebuie sa poata sa execute<BR>&gt; mai multe operatii in acelasi timp, pe mai multe<BR>&gt; fisiere?<BR>&gt;<BR>&gt; Da<BR>&gt;<BR>&gt; 3. Thread-urile trebuie sa fie pornite tot timpul,<BR>&gt; adica la lansarea server-ului sa se creeze toate<BR>&gt; thread-urile worker ( sugestia ne-a fost data la<BR>&gt; laborator) sau in momentul in care vine o cerere si<BR>&gt; exista un "loc liber" sa se lanseze un thread<BR>&gt; corespunzator operatiei, care sa se termine in<BR>&gt; momentul in care s-a incheiat operatia pe care o<BR>&gt;
 executa?<BR>&gt;<BR>&gt;<BR>&gt; Crearea lor se face la inceput. Oprirea lor se face numai atunci cand se<BR>&gt; opreste serverul (deci, in cazul nostru cam niciodata)<BR>&gt;<BR>&gt; --- George Ciobanu wrote:<BR>&gt; &gt; Salut,<BR>&gt; &gt;<BR>&gt; &gt; Serverul ar trebui sa faca numai load balancing;<BR>&gt; &gt; deci un thread de tip ls tb sa trimita raspunsul<BR>&gt; &gt; singur la client fara participarea serverului. E ok<BR>&gt; &gt; ca threadul de tip ls sa poata prelua numai o<BR>&gt; &gt; operatie la un moment dat, dar tb sa te asiguri ca<BR>&gt; &gt; serverul nu se blocheaza ( serverul poate trimite<BR>&gt; &gt; toate cele 5 cereri, iar threadul respectiv le<BR>&gt; &gt; trateaza secvential)<BR>&gt; &gt; Partea de asincronism este impusa numai pentru<BR>&gt; &gt; celelalte doua tipuri de threaduri. Dar, ca raspuns<BR>&gt; &gt; la intrebarea ta asincronismul implica apeluri<BR>&gt; &gt; neblocante.<BR>&gt; &gt;<BR>&gt; &gt; Toma Monica wrote:<BR>&gt; &gt;<BR>&gt; &gt;
 Buna, am si eu cateva nelamuriri, si desi risc sa<BR>&gt; &gt; par<BR>&gt; &gt; stupida, nu am gasit pe nimeni care sa poate sa imi<BR>&gt; &gt; fie de ajutor...<BR>&gt; &gt; Iata care sunt problemele mele:<BR>&gt; &gt;<BR>&gt; &gt; 1. sa presupunem ca avem 5 clienti care se se<BR>&gt; &gt; conecteaza la server pt a cere un ls, iar serverul<BR>&gt; &gt; dispune doar de un thread care face aceasta<BR>&gt; &gt; operatie.<BR>&gt; &gt; Eu am ales ca serverul ( thread-ul principal) sa<BR>&gt; &gt; comunica cu thread-urile worker (prin care executa<BR>&gt; &gt; operatiile) folosind pipe-uri. Ideea e ca citirea de<BR>&gt; &gt; pe pipe am facut-o cu read(blocant) adica un thread<BR>&gt; &gt; worker al serverului isi verifica pipe-ul si dc are<BR>&gt; &gt; operatie o citeste de pe pipe si o executa, deci un<BR>&gt; &gt; thread va putea executa la un moment dat numai o<BR>&gt; &gt; operatie din cele care ii sunt asignate de server -&gt;<BR>&gt; &gt; contravine aceasta metoda cu ideea de
 asincron?<BR>&gt; &gt; Revenind la cei 5 clienti, dupa ce se obtine<BR>&gt; &gt; rezultatul listarii, acesta trebuie trimis la<BR>&gt; &gt; clienti.Rezultatul este memorat pe server intr-un<BR>&gt; &gt; fisier si apoi citit si trimis la client. Trebuie<BR>&gt; &gt; aceasta citire sa fie si ea asincrona?<BR>&gt; &gt;<BR>&gt; &gt; Probabil voi astepta raspuns la aceasta intrebare<BR>&gt; &gt; inainte sa mai inaintez si altele. S-ar putea sa ma<BR>&gt; &gt; lamuresc.<BR>&gt; &gt;<BR>&gt; &gt; Se poate folosi functia sprintf?<BR>&gt; &gt;<BR>&gt; &gt; Da<BR>&gt; &gt;<BR>&gt; &gt;<BR>&gt; &gt;<BR>&gt; &gt; =====<BR>&gt; &gt;<BR>&gt; &gt; I dream of finding myself laughing!<BR>&gt; &gt;<BR>&gt; &gt;<BR>&gt; &gt; __________________________________<BR>&gt; &gt; Do you Yahoo!?<BR>&gt; &gt; New Yahoo! Photos - easier uploading and sharing.<BR>&gt; &gt; http://photos.yahoo.com/<BR>&gt; &gt; _______________________________________________<BR>&gt; &gt; so mailing list<BR>&gt; &gt;
 so@atlantis.cs.pub.ro<BR>&gt;<BR>&gt; http://atlantis.cs.pub.ro/cgi-bin/mailman/listinfo/so<BR>&gt;<BR>&gt; &gt; ---------------------------------<BR>&gt; &gt; Do you Yahoo!?<BR>&gt; &gt; New Yahoo! Photos - easier uploading and sharing<BR>&gt;<BR>&gt; =====<BR>&gt;<BR>&gt; I dream of finding myself laughing!<BR>&gt;<BR>&gt;<BR>&gt; __________________________________<BR>&gt; Do you Yahoo!?<BR>&gt; New Yahoo! Photos - easier uploading and sharing.<BR>&gt; http://photos.yahoo.com/<BR>&gt; _______________________________________________<BR>&gt; so mailing list<BR>&gt; so@atlantis.cs.pub.ro<BR>&gt; http://atlantis.cs.pub.ro/cgi-bin/mailman/listinfo/so<BR>&gt;<BR>&gt;<BR>&gt;<BR>&gt; ---------------------------------<BR>&gt; Do you Yahoo!?<BR>&gt; New Yahoo! Photos - easier uploading and sharing<BR><BR>_______________________________________________<BR>so mailing list<BR>so@atlantis.cs.pub.ro<BR>http://atlantis.cs.pub.ro/cgi-bin/mailman/listinfo/so</BLOCKQUOTE><p><hr SIZE=1>
Do you Yahoo!?<br>
<a href="http://pa.yahoo.com/*http://us.rd.yahoo.com/evt=21260/*http://photos.yahoo.com">New Yahoo! Photos - easier uploading and sharing</a>
--0-65181631-1070814879=:88262--