voluntary context switch method