1. A method of scheduling a computing thread, the method comprising: identifying a lead thread index of a thread from a plurality of threads before a start of a scheduling cycle based on a plurality of precycle signals that indicate thread states of the plurality of threads, the precycle signals indicating whether each thread of the plurality of threads will be runnable at the start of the scheduling cycle, the thread identified by the lead thread index being runnable at the start of the scheduling cycles, wherein the scheduling cycle is a clock cycle of a clock signal and the start of the scheduling cycle is established by an edge of the clock signal; identifying an alternative thread index of another thread from the plurality of threads before the start of the scheduling cycle based on the plurality of precycle signals, the thread identified by the alternative thread index being runnable at the staff of the scheduling cycle, the lead thread index being ranked higher than the alternative thread index; and selecting either the lead thread index or the alternative thread index as a selected thread index in the scheduling cycle, based on a same cycle signal received in the scheduling cycle indicating whether the thread identified by the lead thread index has become unrunnable in the scheduling cycle, the thread identified by the selected thread index being a highest ranked thread index being runnable at an end of the scheduling cycle, wherein the same cycle signal indicates a cache miss occurring in a pipelined processor or an instruction exception occurring in the pipelined processor or a wait on arithmetic operation occurring in the pipelined processor or an instruction synchronization occurring in the pipelined processor.