rtel wrote on Thursday, July 04, 2013:
The task has no knowledge of what the scheduler is doing. As far as it is concerned it is just executing a sequential piece of code.
The scheduler’s job is to maintain the context of each task exactly as it switches the tasks in and out. It would be time consuming and a logical error for the scheduler to look ahead at what a task will do in the future and then try to change it.
Therefore there is nothing you can do about it, but a preemptive context switch will only occur if there is a task of higher priority that becomes available, or the timeslice used by the current task expires and there is a task of equal priority that is in the ready state.