If you ask if a call to a blocking kernel such as fread() , which requires an IO drive, can be blocked, then yes.
In particular, a blocking call will basically put Thread_1 on hold, waiting for what it expects. If Thread_1 is asleep, then Thread_2 will be scheduled to run (unless something higher priority is expected).
Edit:. If you want to be βsure enoughβ that Thread_1 is making a blocking call, make Thread_2 a lower priority than Thread_1 (so that it does not start at all if Thread_1 is not blocked), and when it starts, it raises the priority to more higher than Thread_1, until a hardware interrupt is delivered, at which point it lowers the priority and calls sched_yield() .
Artelius
source share