title: Running an NSRunLoop with different dates changes observed thread count
body: <p>While writing an app, I encountered some odd behavior that I wasn't expecting and distilled it down to the following:</p>
  
  <p>I made an app whose main function is as follows. While observing it in Activity Monitor, it uses one thread.</p>
  
  <pre><code>int main(int argc, const char * argv[])
  {
      @autoreleasepool
      {
          while (YES)
          {
              [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode
                                       beforeDate:[NSDate distantFuture]];
          }
      }
  
      return 0;
  }
  </code></pre>
  
  <p>If I change <code>[NSDate distantFuture]</code> to <code>[NSDate dateWithTimeIntervalSinceNow:1.0]</code>, the app uses ~3 threads. After inspecting this a bit it appears that a <code>dispatch_queue</code> has been implicitly created on my behalf which in turn makes a thread pool.</p>
  
  <p>Just curious: why does this happen? What about <code>[NSDate dateWithTimeIntervalSinceNow:1.0]</code> causes the run loop to create a <code>dispatch_queue</code>?</p>