Under windows, is there anyway to programmatically count context switches of the same process? The best thing is a callback that gets called whenever a thread is switched.
There's a performance counter that does the work for you. All you have to do is read its value. You can find a description on how to do it interactively here, but performance counters can also be consumed using their API.