Вход/Регистрация
Параллельное и распределенное программирование на С++
вернуться

Хьюз Камерон

Шрифт:

pthread_getconcurrency, pthread_setconcurrency — функции считывания и установки уровня параллелизма.

Синопсис

XSI

 #include <pthread.h>

int pthread_getconcurrency (void);

int pthread_setconcurrency (int new_level);

Описание

Несвязанные потоки в процессе выполняются (или не выполняются) одновременно. По умолчанию реализация потоков гарантирует активность достаточного количества потоков для того, чтобы процесс мог успешно продолжать выполнение. И хотя такой подход сохраняет системные ресурсы, он может не обеспечить наиболее эффективный уровень параллелизма.

Функция pthread_setconcurrency позволяет приложению с помощью пара м етра new_level информировать реализацию потоков о желаемом уровне параллелизма. Реальный же уровень параллелизма, обеспечиваемый реализацией в результате вызова этой функции, не определен. Если значение параметра new_level равно нулю, это означает, что реализация должна поддерживать уровень параллелизма таким, как если бы функция pthread_setconcurrency никогда не вызывалась.

Функция pthread_getconcurrency возвращает значение, установленное в результате предыдущего обращения к функции pthread_setconcurrency . Если «предыдущего» вызова этой функции не было, функция pthread_getconcurrency возвращает нуль, который означает, что реализация поддерживает заданный уровень параллелизма.

Обращение к функции pthread_setconcurrency информирует реализацию о желаемом уровне параллелизма, а реализация использует его как совет, а не требование.

Если реализация не поддерживает мультиплексирование пользовательских потоков, то функции pthread_setconcurrency и pthread_getconcurrency используются ради совместимости исходного кода, но не дают никакого эффекта при вызове. Для поддержки семантики функций параметр new_level сохраняется при вызове функции pthread_setconcurrency , чтобы послелующее обращение к функции pthread_getconcurrency могло вернуть то же значение.

Возвращаемые значения

При успешном выполнении функция pthread_setconcurrency возвращает нулевое значение; в противном случае — код ошибки, обозначающий ее характер.

Функция pthread_getconcurrency всегда возвращает уровень параллелизма, установленный в результате предыдущего обращения к функции pthread_setconcurrency . Если «предыдущего» вызова этой функции не было, функция pthread_getconcurrency возвращает нуль.

Ошибки

Фу н кци я pthread_setconcurrency завершится неудачно, если:

[EINVAL ] значение, заданное пара м етро м new_level , отрицательно;

[EAGAIN] значение, заданное пара м етро м new_level, приводит к перерасхолу систе м ных ресурсов.

Эти функции не возвращают код ошибки [EINTR].

Примеры

Отсутствуют.

Замечания по использованию

Использование этих функций изменяет состояние базового уровня параллелизма, от которого зависит работа приложения. Разработчикам библиотек рекомендуется не использовать функции pthread_getconcurrency и pthread_setconcurrency, поскольку это может привести к конфликту с их использованием в приложении.

Логическое обоснование

Отсутствует.

Будущие направления

Отсутствуют.

Смотри также

То м Base Definitions стандарта IEEE Std 1003.1-2001, <pthread.h>.

Последовательность внесения изменений

Функции впервые реализованы в выпуске Issue 5.

pthread_getschedparam, pthread_setschedparam

Имя

pthread_getschedparam, pthread_setschedparam — функции динамического доступа к параметрам стратегии планирования потока (REALTIME THREADS).

Синопсис

THR TPS

#include <pthread.h>

int pthread_getschedparam (pthread_t thread, int *restrict policy, struct sched_param *restrict param);

int pthread_setschedparam (pthread_t thread, int policy, const struct sched_param *param);

Описание

Функции pthread_getschedparam и pthread_setschedparam используются для считывания и установки соответственно значений стратегии планирования и параметров отдельных потоков многопоточного процесса. Для значений стратегии планирования SCHED_FIFO и SCHED_RR в структуре sched_param должен быть установлен только один ее член sched_priority [27] (уровень приоритета). Для значения SCHED_OTHER параметры планирования определяются реализацией.

  • Читать дальше
  • 1
  • ...
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: