parameters: (self)
docstring: Obtains Task instances from the BuildContext instance and adds the ones that need to be executed to
  		:py:class:`waflib.Runner.Parallel.ready` so that the :py:class:`waflib.Runner.Spawner` consumer thread
  		has them executed. Obtains the executed Tasks back from :py:class:`waflib.Runner.Parallel.out`
  		and marks the build as failed by setting the ``stop`` flag.
  		If only one job is used, then executes the tasks one by one, without consumers.
docstring_summary: Obtains Task instances from the BuildContext instance and adds the ones that need to be executed to
  		:py:class:`waflib.Runner.Parallel.ready` so that the :py:class:`waflib.Runner.Spawner` consumer thread
  		has them executed. Obtains the executed Tasks back from :py:class:`waflib.Runner.Parallel.out`
  		and marks the build as failed by setting the ``stop`` flag.
  		If only one job is used, then executes the tasks one by one, without consumers.
docstring_tokens: Obtains Task instances from the BuildContext instance and adds the ones that need to be executed to : py : class : waflib . Runner . Parallel . ready so that the : py : class : waflib . Runner . Spawner consumer thread has them executed . Obtains the executed Tasks back from : py : class : waflib . Runner . Parallel . out and marks the build as failed by setting the stop flag . If only one job is used then executes the tasks one by one without consumers .
function: def start(self):
  		"""
  		Obtains Task instances from the BuildContext instance and adds the ones that need to be executed to
  		:py:class:`waflib.Runner.Parallel.ready` so that the :py:class:`waflib.Runner.Spawner` consumer thread
  		has them executed. Obtains the executed Tasks back from :py:class:`waflib.Runner.Parallel.out`
  		and marks the build as failed by setting the ``stop`` flag.
  		If only one job is used, then executes the tasks one by one, without consumers.
  		"""
  		self.total = self.bld.total()
  
  		while not self.stop:
  
  			self.refill_task_list()
  
  			# consider the next task
  			tsk = self.get_next_task()
  			if not tsk:
  				if self.count:
  					# tasks may add new ones after they are run
  					continue
  				else:
  					# no tasks to run, no tasks running, time to exit
  					break
  
  			if tsk.hasrun:
  				# if the task is marked as "run", just skip it
  				self.processed += 1
  				continue
  
  			if self.stop: # stop immediately after a failure is detected
  				break
  
  			st = self.task_status(tsk)
  			if st == Task.RUN_ME:
  				self._add_task(tsk)
  			elif st == Task.ASK_LATER:
  				self.postpone(tsk)
  			elif st == Task.SKIP_ME:
  				self.processed += 1
  				self.skip(tsk)
  				self.add_more_tasks(tsk)
  			elif st == Task.CANCEL_ME:
  				# A dependency problem has occurred, and the
  				# build is most likely run with `waf -k`
  				if Logs.verbose > 1:
  					self.error.append(tsk)
  				self.processed += 1
  				self.cancel(tsk)
  
  		# self.count represents the tasks that have been made available to the consumer threads
  		# collect all the tasks after an error else the message may be incomplete
  		while self.error and self.count:
  			self.get_out()
  
  		self.ready.put(None)
  		if not self.stop:
  			assert not self.count
  			assert not self.postponed
  			assert not self.incomplete
function_tokens: def start ( self ) : self . total = self . bld . total ( ) while not self . stop : self . refill_task_list ( ) # consider the next task tsk = self . get_next_task ( ) if not tsk : if self . count : # tasks may add new ones after they are run continue else : # no tasks to run, no tasks running, time to exit break if tsk . hasrun : # if the task is marked as "run", just skip it self . processed += 1 continue if self . stop : # stop immediately after a failure is detected break st = self . task_status ( tsk ) if st == Task . RUN_ME : self . _add_task ( tsk ) elif st == Task . ASK_LATER : self . postpone ( tsk ) elif st == Task . SKIP_ME : self . processed += 1 self . skip ( tsk ) self . add_more_tasks ( tsk ) elif st == Task . CANCEL_ME : # A dependency problem has occurred, and the # build is most likely run with `waf -k` if Logs . verbose > 1 : self . error . append ( tsk ) self . processed += 1 self . cancel ( tsk ) # self.count represents the tasks that have been made available to the consumer threads # collect all the tasks after an error else the message may be incomplete while self . error and self . count : self . get_out ( ) self . ready . put ( None ) if not self . stop : assert not self . count assert not self . postponed assert not self . incomplete