Функция pthread_create() позволяет добавить новый поток управления к текущему процессу. Прототип функции:
void*(*start_routine)(void *), void *arg);
pthread_attr_t tattr;
pthread_t tid;
extern void *start_routine(void *arg);
void *arg;
int ret;
/* поведение по умолчанию*/
ret = pthread_create(&tid, NULL, start_routine, arg);
/* инициализация с атрибутами по умолчанию */
ret = pthread_attr_init(&tattr);
/* определение поведения по умолчанию*/
ret = pthread_create(&tid, &tattr, start_routine, arg);
Функция pthread_create() вызывается с атрибутом attr, определяющим необходимое поведение. start_routine - это функция, с которой новый поток начинает свое выполнение. Когда start_routine завершается, поток завершается со статусом выхода, установленным в значение, возвращенное start_routine.
Если вызов pthread_create() успешно завершен, идентификатор созданного потока сохраняется по адресу tid.
Создание потока с использованием аргумента атрибутов NULL оказывает тот же эффект, что и использование атрибута по умолчанию; оба создают поток по умолчанию. При инициализации tattr он получает поведение по умолчанию.
pthread_create() возвращает 0 при успешном завершении. Любое другое значение указывает, что произошла ошибка.