anchor.diff:  
   image::images/IOMultiplexing.png[]
   
  -En el ejemplo de arriba hacemos el block en el llamado al _select_, esperando a que el datagrama esta listo para ser leído.
  +En el ejemplo de arriba hacemos el block en el llamado al _select_, esperando a que el datagrama este listo para ser leído.
   Cuando el _select_ retorna esto indica que el socket es "readable", entonces podemos llamar a _recvfrom_ para copiar el datagrama
   en el buffer de nuestra aplicación.
   
   ===== Comparing to the blocking I/O model
   Si comparamos la figura del modelo 1 y la del 3:
   
  -* Ventajas: Podemos monitorear mas de un descriptor hasta que este listo
  +* Ventajas: Podemos monitorear mas de un descriptor hasta que alguno este listo.
   * Desventajas: Usando el _select_ requiere dos system calls _(select y recvfrom)_ en lugar de un solo llamado.
   
   ===== Multithreading with blocking I/O
  
positive.code: 
  ==== What is I/O Multiplexing?
  
  Es la capacidad para indicarle al kernel que queremos ser notificados si uno o mas operaciones de IO están listas.
  Algunas funciones como select, poll, epoll (linux) and kqueue (bsd) nos proveen esta funcionalidad.
  
  ==== Why Multiplexing?
  
negative.code: Antes de empezar a entender los distintos modelos de IO, seria bueno saber por que
  podríamos estar interesado en ellos.
  
  Cuando desarrollamos una aplicación, esta puede realizar distintas tareas, cálculos,
  leer archivos, enviar emails, etc. Dependiendo del tipo de tarea que ejecutemos podremos
  decir que nuestro proceso es *CPU-bound* o *I/O-bound*.
  
  