Создать поток
#include <sys/neutrino.h>int ThreadCreate( pid_t pid,void * (func)( void * ),void *arg,const struct _thread_attr *attr );int ThreadCreate_r( pid_t pid,void * (func)( void * ),void *arg,const struct _thread_attr *attr );
0
для создания потока в текущем процессе.NULL
, если необходимо использовать атрибуты по умолчанию. Подробнее - в thread attributes structure. Если изменить атрибуты после создания потока, то атрибуты потока не изменятся. |
libc
Эти вызовы ядра создают новый поток с атрибутами, определяемыми attr, внутри процесса, определяемого по pid. Если pid равен нулю, используется текущий процесс.
Только менеджер процессов может создавать потоки в других процессах. |
Функции ThreadCreate() и ThreadCreate_r() идентичны, за исключением способа сообщения об ошибках.
Новый поток разделяет все ресурсы процесса, в котором он создан. Что включает память, таймеры, каналы и соединения. Стандартная библиотека C содержит мьютексы, чтобы сделать эти сущности потокобезопасными.
Состояние сигналов
Состояние сигналов нового потока инициализируется следующим образом:
PTHREAD_CANCEL_ENABLE
и PTHREAD_CANCEL_DEFERRED
. Локальное хранилище приватных данных
Каждый поток содержит локальную область потока для хранения своих приватных данных. Можно получить указатель на эту область при помощи __tls() (определён в <sys/storage.h>
).
Локальное хранилище потока определно в struct _thread_local_storage.
Эти вызовы не блокируют.
-1
, код ошибки записывается в errno.
PTHREAD_SCOPE_PROCESS
. Все потоки ядра являются PTHREAD_SCOPE_SYSTEM
. ЗОСРВ «Нейтрино»
Интерпретация PTHREAD_STACK_MIN
в ЗОСРВ «Нейтрино» - это достаточное количество памяти, чтобы запустить пустой поток:
void nothingthread( void ){return;}
struct sched_param, struct _thread_attr, struct _thread_local_storage, __tls(), pthread_create(), SchedSet(), ThreadCancel(), ThreadDestroy()
Предыдущий раздел: Описание API системной библиотеки