def put(self, target, callback = None, name = None, *args, **kargs):
        """
        Start task.
        @target: callable to run with *args and **kargs arguments.
        @callback: callable executed after target.
        """
        self.count_lock.acquire()
        if not self.shared['workers']:
            self.add(name = name)
        self.count_lock.release()
        self.queue.put_nowait((target, callback, name, args, kargs))