Минимизируйте размер контекста и / или избегайте переключений контекста. Как именно вы это делаете, зависит от контекста (не контекста, который вы переключаете, а контекста проблемы, процессора, ОС и т. Д.).
На процессоре x86 вы можете избежать ненужного сохранения и восстановления состояния модуля с плавающей запятой, если он не изменяется. Это можно сделать, установив бит task switched
в CR0
на 1 во время переключения контекста, а затем ожидая особого исключения CPU, возникающего из первой инструкции FPU нового потока. Когда это происходит, вы сохраняете состояние FPU старого потока, загружаете состояние FPU текущего потока, сбрасываете CR0.TS
и возобновляете выполнение с этой инструкцией FPU. Если потоки приходят и уходят, но исключение не происходит, это означает, что потоки не выполняют работу FPU, и вы не делаете полных переключений контекста.