Я хочу предотвратить переключение потоков в Windows XP / 7 в критической по времени части моего кода, которая выполняется в фоновом потоке. Я почти уверен, что не смогу создать ситуацию, в которой я могу гарантировать, что этого не произойдет из-за прерываний с более высоким приоритетом из системных драйверов и т. Д. Однако я хотел бы уменьшить вероятность переключения потоков во время этой части моего кода до минимума, что я могу. Существуют ли какие-либо флаги создания потока или вызовы API Window, которые могут мне помочь? Общие советы по технике тоже приветствуются. Если есть способ сделать это без повышения приоритета потоков до критических в реальном времени, это было бы замечательно, так как я беспокоюсь о создании проблем с производительностью системы для пользователя, если я это сделаю.
ОБНОВЛЕНИЕ: я добавляю это обновление после просмотра первых ответов на мой оригинальный пост. Конкретное приложение, мотивировавшее этот вопрос, связано с потоковой передачей звука в реальном времени. Я хочу устранить каждую задержку, которую я могу. После кодирования моего первоначального проекта я обнаружил, что переключение потоков может вызывать задержку в 70 мс или более. Поскольку мое приложение находится между двумя сокетами, выступающими в качестве посредника для передачи звука, как только я получаю звуковой буфер, я хочу немедленно развернуться и вытолкнуть его в целевой разъем. В моем первоначальном проекте использовались два взаимодействующих потока и семафор, поскольку один поток управлял исходным сокетом, а другой - целевым. Эта архитектура возникла из того факта, что два устройства за сокетами являются разнородными объектами.
Я понял, что, если бы я соединил два сокета в одном потоке, я мог бы написать блок кода, который немедленно отреагировал на сообщение о получении данных сокета и перевернул его к целевому сокету за один раз. Теперь, если я могу сделать все возможное, чтобы избежать переключения потоков, это будет оптимальной архитектурой кодирования для минимизации задержки. Повторим, я знаю, что не могу гарантировать эту ситуацию, но я ищу советы / предложения о том, как написать блок кода, который делает это и сводит к минимуму вероятность переключения промежуточного потока.
Обратите внимание, я знаю, что код O / S за сокетами вводит (потенциальные) собственные задержки.