Conexiune sincron sau asincron

Conexiune sincron sau asincron

Oamenii, de fapt, eu fac programare în baza de date, dar ar fi fost și eu SNPP-serverochek a făcut mici. Esența astfel încât protocolul SNPP este ceva, cum ar fi SMTP (de exemplu, serverul de comandă-răspuns-echipa, etc.). Am făcut totul prin ClientSocket (SNPP-server este situat într-un alt birou și nu-mi pasă cu adevărat). Toate acțiunile am efectua după eveniment onClientSocketRead (și toate acestea se face asincron, adică nonblocking). Mă gândeam (totul merge bine), dacă am făcut-o asincronă bine? Poate sincronă mai bine? Explicați modul în care este utilizat cazuri care mod (sau ASINH sincronizare)? Ei bine, eu sunt un Lamer (încă) în acest domeniu.

Modul asincronă este bună punere în aplicare de software simplu, și este utilizat atunci când clientul și serverul pentru a face schimb de mesaje scurte în „întrebare - vremya_ozhidaniya_otveta - răspunsul“, în cazul în care vremya_ozhidaniya_otveta tinde la zero. În acest mod, serverul procesează cererile clienților săi în mod constant în osn.potoke și. în cazul în care răspunsurile vremya_ozhidaniya_otveta pic de întârziere admisibilă kolucheniem de server pentru fiecare client este relativ mic.

modul sincron (în acest caz TServerSocket - modul de blocare a firului, adică folosind apeluri de blocare WinsockAPI multithread la nivelul debitului) este bun în faptul că serverul de procesare este kl.zaprosov paralelă simultană în diferite potokah, fiecare dintre care este unicast singur kl.soedineniya.
În primul rând, este nevoie de un astfel de mod, atunci când vremya_ozhidaniya_otveta în mod semnificativ (de exemplu, clientul a solicitat serverul ND, formarea care serverul efectuează interogarea bazei de date și fakt.vremya interogare relativ mare). În cazul în care serverul să se ocupe de astfel de cereri „pacalit“ în mod succesiv, clientul pentru client, într-un singur flux de cod, apoi cu clienții actuali Alți clienți au fost, de asemenea, de așteptare pentru server pentru a deservi cererea, și totul vine să le serviciu.
Apropo, toate comerciale curente SQL-servere sunt multithreaded (tehnologie SuperServer), și tratamentul kl.zaprosov au efectuat în paralel, în fire diferite, utilizarea, inclusiv și au tendința de a bloca transportul API-apeluri și alte niveluri

Ie pentru clienții SMTP sau POP pot utiliza conexiunea non-blocare? Și să spunem că, dacă există o parte de client care trimite, după cum spune, cererea îngrămădite, poate trimite, de asemenea, o cerere și apoi prohlozhdatsya, și spune dacă ai pus un cronometru pentru un minut, într-un minut, în cazul în care nu răspunsul a venit ca aproape priza. Am susțin pe partea de client, are sens să utilizeze o conexiune de blocare?

Și cu TZ clientul are sens să-l folosească într-un transport multifir atunci când există acces simultan la mai mult de un server.

Și altul. Mod de „blocare“ și modul „multi-threaded“ - lucruri, în principiu, diferite, dar în același timp, strâns legate de prezent, profesor, dar a făcut, inf.sistemah distribuit.

Memorie: 0.73 MB
Timp: 0,04 c