My blog

posts

Synchronous vs Asynchronous

M-am tot intalnit  cu aceste doua concepte synchronous si asynchronous tasks, insa nu le-am oferit prea multa importanta pana nu de mult. Ideea e ca aceste doua concepte stau la baza intelegerii altor operatiuni care te pot ajuta sa faci aplicatii mai complexe.

Pentru a simplifica toata treaba imagineaza-ti ca esti un ospatar intr-un restaurant. Jobul tau este de a prelua comenzile de la clienti, a le da bucatarului, iar  in final a duce mancarea/comanda clientilor(presupun ca toata lumea stie ce face un ospatar).  Ei bine, poti face tot acest proces in doua moduri diferite si iti voi explica imediat cum.

Prima metoda ar fi sa preiei comanda de la client si sa astepti ca bucatarul sa termine comdanta, tu nemaifacand nimic altceva decat sa astepti, iar dupa ce aceasta este gata sa o livrezi clientilor la masa. Dupa cum cred ca poti deduce si tu, abordand aceasta metoda vei fi concediat urmatoarea zi. Ei bine,  cam in asta consta metoda syncronous: preiei o comanda si te ocupi numai si numai de acea comanda ignorant total celelalte comenzi. 

Cea de-a doua metoda este cea care ne vine in minte tuturor atunci cand ne gandim la responsabilitatile un ospatar. Practic, tu preiei comanda de la clienti, o scrii pe un biletel si o dai bucatarului (o pui la coada). In timpul asta, mergi la urmatorii clienti pentru a le prelua comanda, iar cand mancarea este gata pentru unul din clienti te duci si o livrezi. Astfel, vei oferi clientilor feedback instant fara a-i face sa astepte pana sa mai poata comanda ceva. 

Destul de usor, nu-i asa? Mai devreme am mentionat ceva de o coada. Ei bine, cozile in programare sunt o metoda eficienta de a realiza anumite task-uri si in acelasi timp de a nu face userul sa astepte zeci de minute in fara unui ecran static. Task-urile(mancarea) vor fi facute in background, fiind preluate de o alta clasa(bucatarul), iar userul va putea interactiona in continuare cu aplicatia ta(ospatarul) . 

In toate limbajele de programare exista aceasta posibilitate de a realiza cozi. Spre exemplu, in Laravel (un framework pentru PHP) poti crea cozi(Queues) pentru a realiza un search in baza de date, fara a bloca interactiunea userului cu aplicatia in timp ce asteapta. De asemenea, in Android Studio exista posibilitatea de a crea Thread-uri care sa lucreze simultan in background fara a bloca aplicatia si a face experienta de utilizare oribila. 

In concluzie, atunci cand ai de facut un singur task poti folosi o abordare sync, insa cand ai de rezolvat mai multe task-uri simultan consider ca  o abordare async este mult mai eficienta. 

Sper ca te-am ajutat sa intelegi ce este cu aceste doua concepte si ca le vei folosi in viitor. Daca ti-a placut lasa-mi un comentariu mai jos, iar daca nu ti-a placut astept sfaturi pentru a-mi imbunatati content-ul. 

0 Comments

  • Be the first one who leaves a comment!

Add a comment