[so] nelamurire privind asincr.

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


--0-1649610648-1070866419=:44575
Content-Type: text/plain; charset=us-ascii

In momentul in care se pierde un semnal, sistemul nu are nici o cale sa anunte acest lucru. Asa ca va seta unele campuri din structura aiocb corespunzator.
In momentul in care eroarea returnata e diferita de EINPROGRESS si aio_return va returna -1 inseamna ca notificarea nu a reusit. (fie din cauza pierderii semnalelor, fie din cauza altor erori interne)

Ionut Constandache <ionut_con@yahoo.com> wrote:
Daca se pierde un semnal care notifica terminarea unei
operatii aio e va intoarce aio_error si aio_return? 

If the asynchronous operation has completed
unsuccessfully, then the error status, as described
for read(2) , write(2) , and fsync(3C) , is returned.
If the asynchronous I/O operation has not yet
completed, then EINPROGRESS is returned. 

Uitandu-ma la read , write si fsync nu mi s-a parut ca
vreo eroare returnata are vreo legatura cu pierderea
unui semnal.

Multam!


--- George Ciobanu wrote:
> Fisierele nu au o lungime maxima
> 
> George Ciobanu wrote: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 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?
> >< BR>> 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
> & gt; 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
> >
> 
=== message truncated ===


__________________________________
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
--0-1649610648-1070866419=:44575
Content-Type: text/html; charset=us-ascii

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