Использование функции sysconf ()
Знание пределов, устанавливаемых системой на использование ресурсов, позволит вашему приложению эффективно управлять ресурсами. Например, максимальное количество потоков, приходящихся на один процесс, составляет верхнюю границу числа рабочих потоков, которое может быть создано процессом. Функция sysconf () используется для получения текущего значения конфигурируемых системных пределов или опций
Синопсис
#include <unistd.h>
#include <limits.h>
Параметр name - это запрашиваемая системная переменная. Функция возвращает значения, соответствующие стандарту POSIX IEEE Std. 1003.1-2001 для заданных системных переменных. Эти значения можно сравнить с константами, определенными вашей реализацией стандарта, чтобы узнать, насколько они согласуются между собой. Для ряда системных переменных существуют константы-аналоги, относящиеся к потокам, процессам и семафорам (см. табл. 4.8).
Если параметр name не действителен, функция sysconf () возвращает число -1 и устанавливает переменную errno, свидетельствующую об ошибке. Однако для заданного параметра name предел может быть не определен, и функция может возвращать число -1 как действительное значение. В этом случае переменная errno не устанавливается. Необходимо отметить, что неопределенный предел не означает безграничность ресурса Это просто означает, что не определен максимальный предел и (при условии доступности системных ресурсов) могут поддерживаться более высокие предельные значения. Рассмотрим пример вызова функции sysconf ():
if(PTHREAD_STACK_MIN == (sysconf(_SC_THREAD_STACK_MIN))){
//...
}
Значение константы PTHREAD_STACK_MIN сравнивается со значением, возвращаемым функцией sysconf (), вызванной с параметром _SC_THREAD_STACK_MIN.
Таблица4 .8. Системные переменные и соответствующие им символьные константы
Переменная Значение Описание _SC_THREADS _POSIX_THREADS Поддерживает потоки _SC_THREAD_ATTR_ STACKADDR _POSIX_THREAD_ATTR_ STACKADDR Поддерживает атрибут адреса стека потока _SC_THREAD_ATTR_ STACKSIZE _POSIX_THREAD_ATTR_ STACKSIZE Поддерживает атрибут размера стека потока _SC_THREAD_STACK_ MIN PTHREAD_STACK_MIN Минимальный размер стека потока в байтах _SC_THREAD_THREADS_MAX PTHREAD_THREADS MAX Максимальное количество потоков на процесс _SC_THREAD_KEYS_MAX PTHREAD_KEYS_MAX Максимальное количество ключей на процесс _SC_THREAD_PRIO_INHERIT _POSIX_THREAD_PRIO_ INHERIT Поддерживает опцию наследования приоритета _SC_THREAD_PRIO _POSIX THREAD_PRIO Поддерживает опцию приоритета потока _SC_THREAD_PRIORITY_ SCHEDULING _POSIX_THREAD_PRIORITY_SCHEDULING Поддерживает опцию планирования приоритета потока _SC_THREAD_PROCESS_SHARED _POSIX_THREAD_PROCESS_SHARED Поддерживает синхронизацию на уровне процесса _SC_THREAD_SAFE_ FUNCTIONS _POSIX_THREAD_SAFE_FUNCTIONS Поддерживает функции безопасности потока _SC_THREAD_ DESTRUCTOR_ ITERATIONS _PTHREAD_THREAD_DESTRUCTOR_ITERATIONS Определяет количество попыток, направленных на разрушение потоковых данных при завершении потока _SC_CHILD_MAX CHILD_MAX Максимальное количество процессов, разрешенных для UID _SC_PRIORITY_ SCHEDULING _POSIX_PRIORITY_ SCHEDULING Поддерживает планирование процессов _SC_REALTIME_ SIGNALS _POSIX_REALTIME_SIGNALS Поддерживает сигналы реального времени _SC_XOPEN_REALTIME_THREADS _XOPEN_REALTIME_ THREADS Поддерживает группу потоковых средств реального времени X/Open POSIX _SC_STREAM_MAX STREAM_MAX Определяет количество потоков данных, которые один процесс может открыть одновременно _SC_SEMAPHORES _POSIX_SEMAPHORES Поддерживает семафоры _SC_SEM_NSEMS_MAX SEM_NSEMS_MAX Определяет максимальное количество семафоров, которое может иметь процесс _SC_SEM_VALUE_MAX SEM_VALUE_MAX Определяет максимальное значение, которое может иметь семафор _SC_SHARED_MEMORY_ OBJECTS _POSIX_SHARED_MEMORY_OBJECTS Поддерживает объекты общей памятиБольше книг — больше знаний!
Заберите 30% скидку новым пользователям на все книги Литрес с нашим промокодом
ПОЛУЧИТЬ СКИДКУ