'@param coordinator: an L{IExclusiveWorker} which will coordinate access
to resources on this L{Team}; that is to say, an
L{IExclusiveWorker} whose C{do} method ensures that its given work
will be executed in a mutually exclusive context, not in parallel
with other work enqueued by C{do} (although possibly in parallel
with the caller).
@param createWorker: A 0-argument callable that will create an
L{IWorker} to perform work.
@param logException: A 0-argument callable called in an exception
context when the work passed to C{do} raises an exception.'

def __init__(self, coordinator, createWorker, logException):

    self._quit = Quit()
    self._coordinator = coordinator
    self._createWorker = createWorker
    self._logException = logException
    self._idle = set()
    self._busyCount = 0
    self._pending = deque()
    self._shouldQuitCoordinator = False
    self._toShrink = 0
