Suppose I spawn 3 threads in a C# application: T1, T2 and T3 and issue Run calls for each.
Usually, the processor will schedule the threads in a round-robin fashion (single processor and all threads have same priority).
However, suppose Thread T1 issues a Blocking web service call.
Will it be preempted immediately or after completion of its time slice?
Basically does issuing the web service network call (or any other call) cause the thread to be in a blocked state?
Once a thread issues a blocking system call (any request to IO) it is suspended, and only marked as “Ready” (not yet running) when that system call completes.
So yes it will be preempted immediately.