Библиотека потоков в пользовательском пространстве

Я хотел бы знать, какие библиотеки потоков пользовательского пространства (для стандарта C ++) доступны, которые позволяют детально контролировать упреждающее планирование на уровне приложений. Целевой платформой является POSIX, но было бы неплохо иметь кроссплатформенное решение.

0

Решение

Портативная система времени выполнения имеет настраиваемое упреждающее планирование пространства пользователя, но написано на C.

0

Другие решения

Если достаточно установить приоритеты потоков, вы можете использовать pthreads: Как увеличить приоритет потока в pthreads?. Если вы хотите иметь возможность планировать вручную, то вы должны использовать кооперативную многопоточность, такую ​​как longjump или http://www.gnu.org/software/pth/pth-manual.html. Для использования нескольких процессоров вам понадобятся потоки ядра, которые вы можете получить через pthreads или OpenMP.

По сути, вы должны сначала создать пару потоков ядра, закрепить их и запустить дополнительные потоки взаимодействия поверх потоков ядра. Имейте в виду, что совместная многопоточность не имеет преимущественного вытеснения, если вы не реализуете вытеснение с событиями таймера, но потоки ядра будут вытеснены. Некоторые кооперативные схемы потоков не работают с C ++, в частности, они могут вызывать деструкторы переменных в стеке при переключении.

2

Стандартная библиотека C ++ 11 имеет поддержку потоков, хотя она полагается на pthreads в Linux.
Вы также можете использовать pthreads напрямую (это реализовано в C). Если вы хотите что-то переносимое — Qt имеет хорошую поддержку потоков.

0
По вопросам рекламы [email protected]