Что такое функционирование в «Реальном масштабе времени»


Download 1.86 Mb.
Pdf ko'rish
bet57/72
Sana19.04.2023
Hajmi1.86 Mb.
#1362511
TuriУчебное пособие
1   ...   53   54   55   56   57   58   59   60   ...   72
Bog'liq
Луканов А.С. Системы реального времени 2020

Запуск потока 
Теперь, когда мы знаем, как запустить другой процесс, 
давайте рассмотрим, как осуществить запуск другого потока. 
Любой поток может создать другой поток в том же самом 
процессе; на это не налагается никаких ограничений (за 
исключением объема памяти, конечно!) Наиболее общий путь 
реализации 
этого 
— 
использование 
вызова 
функций pthread_create(): 
#include 
int int 
pthread_create (pthread_t *thread, const pthread_attr_t *attr, void 
*(*start_routine) (void *), void *arg); 
Функция pthread_create() имеет четыре аргумента : 
· thread - 
указатель на pthread_t, где хранится идентификатор 
потока; 
· attr -
атрибутная запись; 
· start_routine -
подпрограмма, с которой начинается поток; 
· arg - 
параметр, который передается подпрограмме 
start_routine. 
Отметим, что указатель thread и атрибутная запись (attr) — 
необязательные элементы, вы можете передавать вместо них NULL. 
Параметр thread может использоваться для хранения 
идентификатора вновь создаваемого потока. Обратите внимание
что в примерах, приведенных ниже, мы передадим NULL, 
обозначив этим, что мы не заботимся о том, какой идентификатор 
будет иметь вновь создаваемый поток. 
Если бы нам было до этого дело, мы бы сделали так: 
pthread_t tid; 
pthread_create (&tid, ... 


122 
printf («
Новый поток имеет идентификатор %d\n», tid); 
Такое применение совершенно типично, потому что вам часто 
может потребоваться знать, какой поток выполняет какой участок 
кода. 
Небольшой тонкий момент. Новый поток может начать 
работать еще до присвоения значения параметру tid. Это означает, 
что вы должны внимательно относиться к использованию tid в 
качестве глобальной переменной. В примере, приведенном выше, 
все будет корректно, потому что вызов pthread_create() отработал до 
использования tid, что означает, что на момент использования tid 
имел корректное значение. 
Новый поток начинает выполнение с функции start_routine (), 
с параметром arg. 

Download 1.86 Mb.

Do'stlaringiz bilan baham:
1   ...   53   54   55   56   57   58   59   60   ...   72




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling