L' I/O che "non si blocca" è semplicemente un nome, ovvio che un I/O per <b>definizione</b> si blocchi prima o poi. Comunque se hai altri link sarebbe sicuramente interessante leggere qualche paper, magari più complesso di quello che mi hai inviato (ie. qualcosa ai livelli di phrack, non so se conosci)<div>
<br></div><div>Ovviamente si può programmare con I/O asincrono in qualsiasi linguaggio, il problema è che alcune volte è abbastanza ostico. Node.js è un framework che sta avendo molto successo, perché:</div><div><br>
</div>
<div>1) E' Javascript</div><div><br></div><div>2) Rende la programmazione asincrona veramente, <b>veramente </b>semplice.</div><div><br></div><div>Per quanto riguarda la complessità delle richieste, se si usano anche altre lib asincrone (ovviamente se l'I/O è asincrono, lo saranno anche i socket, se lo sono i socket, le lib per l'accesso a qualsiasi db saranno asincrone) non c'è un vero e proprio calo: transloadit (<a href="https://transloadit.com/" target="_blank">https://transloadit.com/</a>) è un servizio per l'encoding di video, audio ed immagini, basato completamente su node.js, e difficilmente riesco a pensare a delle richieste più complesse di quelle.<br>
<br><div class="gmail_quote">Il giorno 24 agosto 2012 08:54, Roberto Polli <span dir="ltr"><<a href="mailto:robipolli@gmail.com" target="_blank">robipolli@gmail.com</a>></span> ha scritto:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<p>Penso che per i talk vada benissimo un argomento più leggero ;)</p>
<p>Il libro te lo consiglio per cultura personale perché è molto bello. Mi.fa piacere che un giovane conosca tutte ste cose.</p>
<p>Se invece ne sai già abbastanza e volessi approfondire ulteriormente fai sapere e ti giro altri link. </p>
<p>Sull'io asincrono, ovviamente esiste. Non è un io «che non si blocca» ma è appunto asincrono. Se non si blocca all'inizio si bloccherà alla fine :P</p>
<p>E che non dipende dal linguaggio di programmazione ma dal programmatore ;)</p>
<p>Su nginx ok, ma distingui la capacità di processare tante richieste da quella di processare richieste complesse.</p>
<p>Sono curioso sulla tua proposta di talk: sarà sicuramente interessante.</p>
<p>Se hai qualcosa di più pesante considera la possibilità di partecipare a qualche conferenza: gli mandi paper on line e se lo accettano bella per te.</p>
<p>Pace,R<br>
</p>
<div class="gmail_quote">Il giorno 23/ago/2012 23:30, "Sandro Mosca" <<a href="mailto:stoke95@gmail.com" target="_blank">stoke95@gmail.com</a>> ha scritto:<div><div><br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div>Allora mi sa che non ci siamo capiti dall'inizio.</div><div><br></div><div>Quel libro è sull'I/O base di linux (che tral'altro già conosco). Se volevo fare un talk su come il kernel gestisce l'accesso ai file lo dicevo da subito.</div>
<div><br></div><div>Libuv (<a href="https://github.com/joyent/libuv" target="_blank">https://github.com/joyent/libuv</a>) è una lib cross-platform per l'astrazione di altre librerie (IOPL e libev), che servono proprio per utilizzare l'async I/O, che per inciso <b>esiste, </b>e consiste semplicemente nel fatto di avere la possibilità di continuare l'esecuzione del programma senza aspettare che l'input sia completamente arrivato.</div>
<div><br></div><div>L'async I/O e la conseguenziale programmazione event-driven stanno avendo molto successo, poiché diventa molto più semplice gestire problemi concorrenziali, la memoria usata è molto bassa (essendoci un numero limitato e predefinito di thread), e per le sue performance molto soddisfacenti.</div>
<div><br></div><div>Un classico esempio di server http buildato con questa tecnologia è nginx (<a href="http://nginx.org/" target="_blank">http://nginx.org/</a>), so che una volta era usato da youporn (possiamo ben immaginare che tipo di richieste deve processare un web server in caso di un sito così conosciuto e di contenuto così spinto).</div>
<div><br></div><div><div class="gmail_quote">Il giorno 23 agosto 2012 21:43, Roberto Polli <span dir="ltr"><<a href="mailto:robipolli@gmail.com" target="_blank">robipolli@gmail.com</a>></span> ha scritto:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p>Per l'i/o asincrono può interessarti questo. Nei capitoli su read e write illustra molto bene le problematiche dell'i/o, l'uso delle cache, ...</p>
<p>LibUv ovviamente è un' altra cosa ;)</p>
<p>Pace, Rob</p>
<p><a href="http://seesee.pbworks.com/f/linux.pdf" target="_blank">http://seesee.pbworks.com/f/linux.pdf</a></p>
<br>_______________________________________________<br>
<a href="http://www.llg.it" target="_blank">http://www.llg.it</a><br>
latina mailing list<br>
<a href="mailto:latina@lists.linux.it" target="_blank">latina@lists.linux.it</a><br>
<a href="http://lists.linux.it/listinfo/latina" target="_blank">http://lists.linux.it/listinfo/latina</a><br>
<br></blockquote></div><br></div>
<br>_______________________________________________<br>
<a href="http://www.llg.it" target="_blank">http://www.llg.it</a><br>
latina mailing list<br>
<a href="mailto:latina@lists.linux.it" target="_blank">latina@lists.linux.it</a><br>
<a href="http://lists.linux.it/listinfo/latina" target="_blank">http://lists.linux.it/listinfo/latina</a><br>
<br></blockquote></div></div></div>
<br>_______________________________________________<br>
<a href="http://www.llg.it" target="_blank">http://www.llg.it</a><br>
latina mailing list<br>
<a href="mailto:latina@lists.linux.it" target="_blank">latina@lists.linux.it</a><br>
<a href="http://lists.linux.it/listinfo/latina" target="_blank">http://lists.linux.it/listinfo/latina</a><br>
<br></blockquote></div><br></div>