Barrel processors switch between execution threads on every machine cycle. This is also known as interleaved or fine-grained multithreading. Like preemptive multitasking, each executing thread is assigned its own program counter and other registers (each thread's architectural state). But, barrel processors guarantee that each thread can execute one instruction every N cycles. In contrast, preemptive multitasking usually runs one thread for hundreds or thousands of cycles while all other threads wait a turn.