#!/bin/bash
checkworkers() {
	local			\
		taskid		\
		parent_required	\
		parent_task
	for key in ${!workers[@]}
	do
		if ! kill -0 ${workers[key]} 2>/dev/null
		then
			taskid=${workertasks[key]}
			(( ++ran ))
			(( active-- ))
			if destroyworker $key
			then
				finishedtasks+=($taskid)
			else
				failedtasks+=($taskid)
				(( ++failed ))
			fi
			parent_task=$(
				Select tasks requires	\
					<<<"id = $taskid"
			)
			if (( parent_task ))
			then
				parent_required=$(
					Select tasks required_by	\
						<<<"id = $parent_task"
				)
				Update tasks required_by $((--parent_required))	\
					<<<"id = $parent_task"
			fi
			unset workertasks[key]
		fi
	done
}
