Press "Enter" to skip to content

Processo sincrono e asincrono informatica – cosa significa?

Quando si inizia a studiare un linguaggio di programmazione e più in generale i sistemi informatici, si inizia generalmente con esempi semplici, ma poi andando avanti è probabile si inizi a sentir parlare di processi sincroni e processi asincroni. ma cosa vogliono sincrono e asincrono informatica? Cerchiamo di chiarirlo insieme.

Indice

Sincrono e asincrono in informatica: definizione breve

La differenza fra un processo sincrono e un processo asincrono in informatica è abbastanza semplice da capire. Proviamo a definire un po’ meglio i due termini e poi vediamo un esempio dalla vita reale.

Un processo sincrono in informatica è un processo che viene eseguito in tempo reale mentre il processo chiamante è in attesa di una risposta. In questo caso quindi chi avvia il processo rimane in attesa che questo venga eseguito e (solitamente) gli venga fornita una risposta.

Un processo asincrono, al contrario, è un processo che non viene eseguito in tempo reale, ma che il sistema chiamato “si impegna” ad eseguire anche più in la nel tempo. In questo caso quindi chi avvia il processo riceve subito una risposta che però non deriva dall’esecuzione del processo ma dalla sua presa in carico.

Per comprendere meglio questi due termini con un esempio possiamo fare un parallelo con il mondo delle comunicazioni. Vediamo due esempi di comunicazione sincrona e asincrona che probabilmente tutti noi conosciamo: il telefono e la posta.

Il telefono: esempio di comunicazione sincrona

Possiamo prendere come esempio di comunicazione sincrona una telefonata: in questo caso la comunicazione avviene in tempo reale, chi chiama avvia la comunicazione, fa una domanda e il chiamato risponde immediatamente. In questo caso quindi la comunicazione è abbastanza veloce, e potremo pretendere una risposta immediata dal nostro interlocutore. D’altra parte però, se facciamo una domanda che richiede all’interlocutore di doverci pensare o dover eseguire delle azioni prima di risponderci, rischieremo di rimanere inutilmente attaccati al telefono per lungo tempo.

La posta: esempio di comunicazione asincrona

Un esempio abbastanza calzante di comunicazione asincrona è la posta (sia fisica che elettronica). Quando mandiamo una e-mail, facciamo una richiesta al nostro interlocutore, ma non riceveremo subito una risposta come avveniva per il telefono. In questo caso il ricevente gestirà la nostra richiesta non in tempo reale, quindi potrebbe essere una modalità di comunicazione svantaggiosa nel caso ci serva una risposta veloce. Anche in questo caso però ci sono dei vantaggi: al contrario della comunicazione sincrona, potremo fare una domanda impegnativa al ricevente. In questo caso potremmo continuare a svolgere altri compiti mentre attendiamo una risposta, evitando di perdere tempo prezioso.

Quando conviene un processo sincrono? quando uno asincrono?

Generalmente la maggior parte dei processi in informatica sono gestiti in maniera sincrona. Questo rende solitamente il lavoro più semplice, l’esecuzione solitamente è più rapida ed è più semplice gestire le risposte.

Ci sono però diversi scenari in cui utilizzare un processo asincrono può essere conveniente. Vediamo alcune condizioni che possono portare alla scelta di un processo asincrono.

  • Il sistema chiamante non ha necessità di conoscere l’esito del processo chiamato. In questo caso il sistema chiamante può avviare il processo e continuare la sua esecuzione senza necessità di attendere la fine dell’esecuzione del processo.
  • Il sistema chiamante ha dei vincoli di tempo che il sistema chiamato non può rispettare. Per capire meglio questa condizione proviamo a fare un esempio: Il sistema A chiede al sistema B di fare un ordine di acquisto. A questo punto il sistema B dovrà fare diverse operazioni prima di poter rispondere al sistema A, alcune delle quali saranno indispensabili per la risposta (ad esempio controllare la disponibilità dei prodotti ordinati), altri invece no (ad esempio l’inserimento dell’ordine nel sistema di contabilità). In questo caso il sistema B potrebbe eseguire in modalità sincrona le operazioni indispensabili, e poi avviare un processo asincrono che si occupi di inserire l’ordine nel sistema di contabilità. In questo caso il sistema B potrebbe confermare l’ordine al sistema A prima che il processo di inserimento dell’ordine nel sistema di contabilità sia terminato.
  • Il sistema chiamante verrà informato successivamente sull’esito del processo asincrono. Questo caso è molto simile all’esempio della posta elettronica fatto in precedenza: Il sistema chiamante chiama il processo asincrono (e-mail con la domanda) e continua la sua esecuzione. Al termine del processo asincrono il sistema che lo ha eseguito contatta il sistema chiamante per notificare il risultato (e-mail con la risposta).

Come si implementa un sistema asincrono?

Una modalità molto semplice di implementazione di un processo asincrono è sicuramente quella dell’uso delle code. In questo caso il sistema chiamante mette in una coda un messaggio con i dettagli per l’esecuzione del processo asincrono e prosegue la sua esecuzione. Il messaggio, una volta in coda, viene preso in carico da un sistema che si occupa di prendere i messaggi ed elaborarli. Finché il messaggio non viene elaborato rimane nella coda in attesa. Riprendendo l’esempio della e-mail possiamo pensare ad una cosa come ad una casella e-mail: il sistema chiamante mette un messaggio in coda, e chi si occupa di leggere la casella processerà le e-mail ricevute non appena avrà la possibilità di farlo.

Conclusioni

Inizialmente il termine asincrono può sembrare difficile da comprendere, e specialmente se siamo alle prime armi può sembrare un’inutile complicazione. Questa modalità di gestione dei processi però diventa molto efficace e in alcuni casi addirittura necessaria a mano a mano che i sistemi su cui si lavora crescono di complessità e di volume di richieste. Si tratta infatti di una modalità che permette ai sistemi di scalare più facilmente e di delegare i lavori più pesanti ai momenti in cui c’è meno carico, o di evitare che l’utente finale rimanga ad aspettare che il sistema esegua delle operazioni che non lo interessano.

Con questa panoramica speriamo di aver fatto un po’ di luce si cosa sono i processi sincroni e asincroni in informatica e su quando gestire un processo in modo asincrono può essere più efficiente rispetto a gestirlo in maniera sincrona.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *