1. A system, comprising: one or more processors; and a non-transitory computer readable storage medium storing executable instructions operable to cause the processor to perform operations comprising: adding, to a scheduler, or more jobs for processing by the one or more processors; marking a job among the one or more jobs that is ready to be assigned to a thread for execution as a job in a runnable state; assigning the job in the runnable state to a running state upon assigning the job to a first thread, wherein, in the running state, the job is being executed by the first thread and is prohibited from being assigned to another thread; adding, to the scheduler, one or more dependent jobs for processing by the one or more processors, wherein the job in the running state can complete execution only after the one or more dependent jobs complete execution; upon adding the one or more dependent jobs, assigning the job in the running state to an inactive state, wherein, in the inactive state, the job waits for the one or more dependent jobs to be completed; upon completion of each of the dependent jobs: assigning the job in the inactive state to the runnable state for a second time, and then designating the job in the runnable state for the second time for execution; and upon finishing executing the job, assigning the job to a finalized state, wherein the job in the finalized state is allowed to be discarded.