Fork me on GitHub
#clojure-italy
<
2019-06-02
>
Andrea Imparato12:06:56

buona domenica a tutti! ho una domanda per voi: ma async ha senoso usarlo solo quando ho tanto i/o e per tutto il resto invece è meglio usare thread/future perchè hanno una migliore performance?

richiardiandrea16:06:02

@andrea.imparato se parli di core.async all fine fai più o meno la stessa cosa: processare qualcosa su un altro thread. Core async e' molto meglio per quanto riguarda ricomporre i risultati di molte cose in parallelo, perché hai map, filter...sul risultato di un channel. Molto più composable. Inoltre core.async ti permette di scegliere se "bloccare" on no in caso il risultato non sia pronto. Ultima cosa, core async penso sia stato studiato non per IO. Future è più spartano e puoi solo delegare e ti blocca sulla get. Se vuoi uno style tipo callback devi usare promise. Fammi sapere se hai altre domande, sta spiegazione è un po' incasinata 😀

Andrea Imparato18:06:20

Eheh no no buona spiegazione :). Quindi in definitiva crei un canale per ogni cosa che vuoi fare in parallelo? Non rischi a creare troppi canali e poi perderti un po' su cosa va dove?

richiardiandrea19:06:25

Beh diciamo che dipende dallo use case. In generale si, ci si perde un po' con core.async in generale ma questo accade comunque per qualsiasi async framework - per questo la raccomandazione è partire da "fai tutto sync" fino a che non hai un grosso grosso problema 😃

andrea.crotti19:06:21

Si noi non lo usiamo praticamente da nessuna parte core.async