Функция для создания нити исполнения

Прототип функции

#include <pthread.h>
 
int pthread_create(pthread_t *thread, pthread_attr_t *attr, void * (*start_routine)(void *), void *arg);

Описание функции

Функция pthread_create служит для создания новой нити исполнения (thread'а) внутри текущего процесса. Настоящее описание не является полным описанием функции, а служит только целям данного курса. Для изучения полного описания обращайтесь к UNIX man.

Новый thread будет выполнять функцию start_routine с прототипом

void * start_routine(void *);

передавая ей в качестве аргумента параметр arg. Если требуется передать более одного параметра, они собираются в структуру, и передается адрес этой структуры. Значение, возвращаемое функцией start_routine не должно указывать на  динамический объект данного thread'а.
Параметр attr служит для задания различных атрибутов создаваемого thread'а. Их описание выходит за рамки нашего курса и мы вседа будем полагать их заданными по умолчанию, подставляя в качестве аргумента значение NULL.

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

При удачном завершении функция возвращает значение 0 и помещает идентификатор новой нити исполнения по адресу, на который указывает параметр thread. В случае ошибки возвращается положительное значение (а не отрицательное, как в большинстве системных вызовов и функций!), которое определяет код ошибки, описанный в файле errno.h. Значение системной переменной errno при этом не устанавливается.