To minimize context switching overhead, use as few thread priorities as possible. Or said another way, give a thread a higher priority if and only if you need it to preempt another thread. Threads that can execute cooperatively at the same priority level will require less context switching overhead.