[so] nelamurire privind asincr.
Ionut Constandache
so@atlantis.cs.pub.ro
Sun, 7 Dec 2003 22:37:07 -0800 (PST)
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 <cdangeorge@yahoo.com> wrote:
> Fisierele nu au o lungime maxima
>
> George Ciobanu <cdangeorge@yahoo.com> 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 <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?
> >< 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/