actually since nothing else in the function requires the lock protection, it could surround *just* the wait and _exit_thread check