call thread_yield instead of sched_run directly to trigger context switch