Я хотел бы знать, какие библиотеки потоков пользовательского пространства (для стандарта C ++) доступны, которые позволяют детально контролировать упреждающее планирование на уровне приложений. Целевой платформой является POSIX, но было бы неплохо иметь кроссплатформенное решение.
Портативная система времени выполнения имеет настраиваемое упреждающее планирование пространства пользователя, но написано на C.
Если достаточно установить приоритеты потоков, вы можете использовать pthreads: Как увеличить приоритет потока в pthreads?. Если вы хотите иметь возможность планировать вручную, то вы должны использовать кооперативную многопоточность, такую как longjump или http://www.gnu.org/software/pth/pth-manual.html. Для использования нескольких процессоров вам понадобятся потоки ядра, которые вы можете получить через pthreads или OpenMP.
По сути, вы должны сначала создать пару потоков ядра, закрепить их и запустить дополнительные потоки взаимодействия поверх потоков ядра. Имейте в виду, что совместная многопоточность не имеет преимущественного вытеснения, если вы не реализуете вытеснение с событиями таймера, но потоки ядра будут вытеснены. Некоторые кооперативные схемы потоков не работают с C ++, в частности, они могут вызывать деструкторы переменных в стеке при переключении.
Стандартная библиотека C ++ 11 имеет поддержку потоков, хотя она полагается на pthreads в Linux.
Вы также можете использовать pthreads напрямую (это реализовано в C). Если вы хотите что-то переносимое — Qt имеет хорошую поддержку потоков.