Moving Threads
Threads That Cannot Be Moved
There are two cases where threads cannot be moved:
- Threads that use Floating Point, MMX, AVX, or SSE registers can be moved until the first floating point, MMX, AVX, or SSE instruction is called, after which you cannot move them.
NOTE: When you include the Microsoft C Runtime, some FPU, MMX, AVX, and SSE registers may be used even though you have not explicitly called them, causing thread migration to not be allowed.
- Interrupt Service Threads (ISTs) and Timer Handler Threads cannot be moved from the processor on which they were started. Additionally, unlike other threads, these two thread types are not restricted to running on a processor within their parent process' mask. This means that, if the parent's mask changes after the IST or timer handler thread has started, the thread could potentially be running on a processor outside of its parent's mask. In general, this should not cause any problems.