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

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

3 ответа

Решение

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

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

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

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

Другие вопросы по тегам