clojure-argentina

2015-09-03T01:20:08.000008Z

wazzup

pabloa 2015-09-03T15:56:04.000010Z

¡Buen día!

nberger 2015-09-03T15:56:46.000011Z

Hola!

pabloa 2015-09-03T15:58:08.000012Z

Gracias por la demo de ayer. Estuvo entretenido.

nberger 2015-09-03T15:58:46.000013Z

Un placer. Me alegro :simple_smile:

nberger 2015-09-03T15:59:27.000014Z

Después me di cuenta que fueron casi 4 horas

2015-09-03T16:51:59.000015Z

buenas

2015-09-03T16:52:20.000016Z

se pasó rápido el tiempo, con las preguntas y respuestas

nberger 2015-09-03T17:54:36.000018Z

ya entendí lo que pasó con el async/put! ayer usando el chan con buffer... async/put! es asíncrono, y si no hay espacio en el buffer los puts se acumulan en un "puts bufffer" que está limitado a 1024 items... esto es en el FixedBuffer, que es el default... usando (chan (sliding-buffer 2)) (o dropping-buffer) entonces simplemente se descarta alguno de los mensajes para hacer lugar

nberger 2015-09-03T17:55:51.000019Z

Ante la pregunta de "entonces para qué sirve el buffer?", la respuesta es async/>!! que es como put (intenta agregar un mensaje al chan) pero bloquea si el buffer está full:

Usage: (>!! port val)
puts a val into port. nil values are not allowed. Will block if no
buffer space is available. Returns true unless port is already closed.

nberger 2015-09-03T17:56:27.000020Z

una referencia a lo de "buffered puts" y el límite de 1024: https://groups.google.com/d/msg/clojure/NIPIzJ7l6RA/QEiIRAk7TgoJ

nberger 2015-09-03T18:00:14.000021Z

Una buena respuesta de Stuart Sierra en SO: http://stackoverflow.com/a/24955514/1389573

pabloa 2015-09-03T18:21:32.000023Z

Interesante.