Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Возвращаемые значения
При успешно м завершении функции pthread_attr_getdetachstate () и pthread_attr_setdetachstate() возвращают нулевое значение; в противном случае — код ошибки, обозначающий ее характер. Функция pthread_attr_getdetachstate() при успешно м выполнении сохраняет значение атрибута detachstate в пара м етре detachstate. Ошибки Функция pthread_attr_setdetachstate () завершится неу д ачно, если: [EINVAL ] значение, за д анное пара м етро м de tachsta te, недействительно. Эти функции не возвра щ ают код ошибки [EINTR]. Примеры Отсутствуют. Замечания по использованию Отсутствует. Логическое обоснование Отсутствует. Будущие направления Отсутствуют. Смотри также pthread_attr_destroy (), pthread_attr_getstackaddr (), pthread_attr_getstacksize (), pthread_create (), том Base Definidons стандарта IEEEStd 1003.1-2001, < pthread.h>. Последовательность внесения изменений Функции впервые реализованы в выпуске Issue 5. Включены для согласования с расширением POSIX Threads Extension. Issue 6 Функции pthread_attr_getdetachstate() и pthread_attr_setdetachstate () от м ечены как часть опции Threads. Раздел «Описание» был отредактирован с целью исключить из него слово «must» («должен»).
Pthread_attr_getguardsize, pthread_attr_setguardsize
Имя pthread_attr_getguardsize, pthread_attr_setguardsize— функции считывания и установки значения потоково г о атрибута guardsize. Синопсис XSI #include < pthread.h> int pthread_attr_getguardsize ( const pthread_attr_t *restrict attr, size_t *restrict guardsize); int pthread_attr_setguardsize (pthread_attr_t *attr, size_t guardsize); Описание Функция pthread_attr_getguardsize () используется для считывания атрибута guardsize из объекта атрибутов, адресуе м ого пара м етро м attr. Этот атрибут возвращается в пара м етре guardsize. Функция pthread_attr_setguardsize () позволяет установить атрибут guardsize в объекте атрибутов, адресуемом параметром аttr. Новое значение этого атрибута записывается из пара м етра guardsize. Если значение пара м етра guardsize равно нулю, то для потоков, создавае м ых с использование м атрибута attr, защищенная область не предоставляется. Если значение пара м етра guardsize больше нуля, то для каждого потока, создавае м ого с использование м атрибута attr, предоставляется защищенная область, раз м ер которой составляет не м енее guardsize байтов. Атрибут guardsize позволяет управлять размером защищенной области, выделяемой для стека создаваемого потока. Атрибут guardsize обеспечивает защиту от адресного переполнения указателя стека. Если стек создается с использование м такой защиты, реализация выделяет дополнительную па м ять в конце области переполнения стека, которая служит специальным буфером. Если приложение переполняет стек, входя в этот буфер, формируется сигнал ошибки (возможно, в сигнале SIGSEGV, передаваемом потоку). Реализация может округлить значение, содержащееся в атрибуте guardsize, до числа, кратного значению реконфигурируемой системной переменной {PAGESIZE} (см. заголовок < sys/mman.h>). Если реализация округлит значение атрибута guardsize до числа, кратного значению пере м енной {PAGESIZE}, то при вызове функции pthread_attr_getguardsize () с заданным параметром attr в пара м етре guardsize сохранится размер защитной области, установленный в результате предварительного вызова функции pthread_attr_setguardsize (). По у м олчанию значение атрибута guardsize равно {PAGESIZE} байтам. Реальное значение пере м енной {PAGESIZE} определяется реализацией. Если предварительно был установлен атрибут stackaddr или stack (т.е. инициатор вызова са м остоятельно выделяет па м ять для стеков потока и управляет этой па м ятью), то атрибут guardsize игнорируется, и никакая защита от переполнения стека потока реализацией не обеспечивается. Вся ответственность в этом случае за управление памятью стека лежит на приложении.
|