title: Socket threads hang in timeout block
body: <p>I'm trying to calculate the time it takes to receive all data from a given socket, so I'm using 'with Timeout(5, False)' to wait 5 seconds for data and then save the time of last recv.  However, the current code just sits and hangs when I supply more than one thread.  I'd like help figuring out why it just hangs when it should timeout.</p>
  
  <pre><code>#!/usr/bin/env python
  import sys
  import time
  from gevent import socket, Timeout
  from gevent.pool import Pool
  
  def calc_wait(website):
      data = ''
      start = stop = time.time()
      sock_buffer = ''
  
      s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
      s.connect((website,80))
      s.send('HEAD / HTTP/1.1\n\n')
  
      with Timeout(5, False):
          while True:
              data = s.recv(1024)
              if data:
                  sock_buffer += data
                  stop = time.time()
  
      print ('Recieved {0} bytes in {1} seconds from {2}'
             .format(len(sock_buffer), stop-start, s.getpeername()))
  
      return 0
  
  if __name__ == "__main__":
  
      targs = ['google.com', 'yahoo.com', 'bing.com',\
               'tide.com', 'monkey.com', 'python.com',\
               'a.com', 'b.com', 'c.com', 'd.com']
  
      pool = Pool(10)
      for t in targs:
          pool.spawn(calc_wait, t)
      pool.join()
  </code></pre>