Синхронизация и взаимодействие программных потоков в операционной среде реального времени. Дорогов А.Ю. - 14 стр.

UptoLike

Составители: 

14
В аргументе thread возвращается идентификатор нового потока (tid),
который далее используется во всех вызовах управления потоком.
Аргумент (*start_routine) содержит указатель на функцию, содержащую
программный код потока. Код потока должен быть предварительно создан
программистом.
Таблица 1.2
POSIX-вызов Microkernel-вызов Описание
pthread_create() ThreadCreate() Создать новый поток
pthread_exit() ThreadDestroy() Уничтожить поток
pthread_detach() ThreadDetach() Отсоединить поток от родительского потока
pthread_join() ThreadJoin() Присоединить поток
pthread_cancel() ThreadCancel()
Удалить поток на ближайшей точке заверше-
ния
N/A ThreadCtl() Изменить атрибуты потока
Аргумент void* arg является указателем на список параметров, переда-
ваемых потоку. Эти параметры могут содержать какую-либо информацию,
необходимую для настройки потока и его функционирования.
Аргумент attr указывает на структуру pthread_attr_t, содержащую атри-
буты нового потока. Возможные атрибуты потоков и их значения по умолча-
нию представлены в табл. 1.3.
Таблица 1.3
Атрибут Значение по умолчанию Описание
detachstate PTHREAD_CREATE_JOINABLE Присоединить к родителю
schedpolicy PTHREAD_INHERIT_SCHED
Наследовать дисциплину диспетчериза-
ции
schedparam Inherited from parent thread
Наследовать параметры диспетчериза-
ции
contentionscope PTHREAD_SCOPE_SYSTEM Масштаб диспетчеризации
stacksize 4K bytes Размер стека
stackaddr NULL Размещение стека
flags Флаги
Атрибут detachstate. По умолчанию поток создается с атрибутом
JOINABLE (присоединенный к родительскому). При завершении данного по-
тока (с помощью вызова pthread_exit()) указатель value_ptr возвращается на
определенную структуру данных, через которую дочерний поток может пе-
редать полезную информацию для родительского потока. Для получения
данной структуры родительский поток (или любой другой поток) должен
сделать системный вызов pthread_join(tid, value_ptr). До этого момента, не-
смотря на то что дочерний поток уничтожен, в памяти сохраняется его след
«Зомби-поток». Если родительский поток сформировал вызов