title: Please explain Zeromq eventloop
body: <p>How is different from multiplexing several sockets via a POLLIN?</p>
  
  <pre><code>while True:
      socks = dict(poller.poll())
  
      if socks.get(control_receiver) == zmq.POLLIN:
          ...
  
      if socks.get(work_receiver) == zmq.POLLIN:
          ...
  </code></pre>
  
  <p>How can it make listener threads more reliable and easier to handle?</p>
  
  <hr>
  
  <p><strong>Background</strong>: I am rolling my own API server and wondering how to make the controller (the part that receives the requests from external source and control signals from the workers)</p>