Функция pthread_setschedparam() может завершиться неудачно, если:
[EINVAL] значение, заданное параметром policy, или значение одного из параметров планирования, связанных со значением стратегии планирования policy, недействительно;
была сделана попытка установить для стратегии планирования или ее параметров неподдерживаемые значения;
была сделана попытка динамически изменить стратегию планирования, установив для нее значение SCHED_SPORADIC, при том, что реализация не поддерживает такое изменение;
инициатор вызова не имеет соответствующего разрешения устанавливать параметры планирования или стратегию планирования для заданного потока;
реализация не позволяет приложению модифицировать один из параметров в соответствии с заданным значением;
значение, заданное пара
Эти функции не возвращают код ошибки [EINTR].
[ENOTSUP]
TSP [ENOTSUP]
[EPERM]
[EPERM]
[ESRCH]
Примеры
Отсутствуют.
Замечания по использованию
Отсутствуют.
Логическое обоснование
Отсутствует.
Будущие направления
Отсутствуют.
Смотри также
pthread_setschedprio (), sched_getparam(), sched_getscheduler (), то
Последовательность внесения изменений
Функции впервые реализованы в выпуске Issue 5. Включены для согласования с расширением POSIX Threads Extension.
Issue 6
Функции pthread_getschedparam() и pthread_setschedparam() от
Код ошибки [ENOSYS] был исключен, поскольку е
К описанию прототипа функции pthread_setschedparam() был приложен список опечаток Open Group Corrigendum U026/2, чтобы второй ар
Для согласования со стандартом IEEE Std 1003.1d-1999 было добавлено значение стратегии планирования SCHED_SPORADIC.
В целях согласования со стандартом ISO/IEC 9899: 1999 в прототип функции pthread_getschedparam () было добавлено ключевое слово restrict.
Был добавлен список опечаток Open Group Corrigendum U047/1.
Быладобавлена интерпретация IEEE PASC 1тегрге1а1юп 1003.1 #96, отмечающая» что значения приоритета также можно установить путем вызова функции pthread_setschedprio().
pthread_join
Имя
pthread_join — функция ожидания завершения потока.
Синопсис
THR
#include
int pthread_join (pthread_t
Описание
Функция pthread_join() приостанавливает выполнение вызывающего потока до тех пор, пока не завершится заданный поток (если он еще не завершился). Если после удачного возвращения из функции pthread_join () параметр
Не определено, учитывается ли в значении {PTHREAD_THREADS_MAX} поток, который завершился, но остался отсоединенным.
Возвращаемые значения
При успешном завершении функция pthread_join () возвращает нулевое значение; в противном случае — код ошибки, обозначающий ее характер.
Ошибки
Функция pthread_join () завершится неудачно, если:
[EINVAL] реализация обнаружила, что значение, заданное параметром
[ESRCH] не найден ни один поток, идентификационный номер которого (ID) соответствовал бы заданному потоку.
Функция pthread_join () может завершиться неудачно, если:
[EDEADLK] была обнаружена взаимоблокировка или значение параметра
Функция pthread_join () не возвращает код ошибки [EINTR].
Примеры
Ниже приведен пример создания потока и его удаления.
typedef struct {
int *ar;
long n;
} subarray;
void *incer (void *arg) {
long i;
for (i = О; i < ((subarray *)arg) ->n; i++) ((subarray *) arg) ->ar[i]++;
}
int main (void) {
int ar[1000000];
pthread_t th1, th2;
subarray sbl, sb2;
sbl.ar = &ar[О];
sbl.n = 500000;
(void) pthread_create(&thl, NULL, incer, &sbl);
sb2.ar = &ar[500000];
sb2.n = 500000;