«Насколько мне известно точное количество потоков ...»
в некотором роде - есть также гиперпоточность, которая мешает вещам; и есть еще тот факт, что C ++ может быть запущен не на ПК. (т.е. встроенные устройства), которые будут иметь статический номер.
"это то, что делает планировщик"
Да. Но не только ваши темы; все потоки ОС и других приложений также контролируются этим.
или, по крайней мере, я могу знать, сколько миллисекунд занимает этот обмен
Нет; и не имеет значения, так как вы ничего не можете с этим поделать. Лучшее, что вы можете сделать, это попытаться отследить, сколько процессорного времени у вас было в вашем потоке, рассчитать общее время процессора, доступное для одного потока; и тогда вы сможете понять, сколько времени вы провели; но опять же, вам не нужно делать это когда-либо, потому что это, вероятно, означает, что ваша программа беспокоится о вещах, находящихся вне ее контроля. Более значимым было бы наблюдение за загрузкой процессора машиной.
Поскольку мое приложение имеет дело с данными в реальном времени, важно
убедитесь, что все потоки работают параллельно.
Это не ваше дело о том, как работают ваши потоки; это зависит от ОС. На вашем компьютере есть более важные задачи, чем ваша программа. Например, ОС требуется время обработки для обработки любых запросов памяти, сделанных приложениями.
Некоторые ОС действительно могут делать это более специализированным способом; Например, Qnix - это ОС реального времени; но это происходит за счет других затрат.
Одна вещь, которую вы можете быть уверены, хотя; в том случае, если у вас максимальное количество возможных потоков, работающих как 8; и вы создаете 10; у вас не будет их всех, работающих параллельно. Возможно, вы захотите взглянуть на некоторые библиотеки, которые помогут убедиться, что созданные вами потоки всегда заняты; boost::asio
например