ВУЗ:
Составители:
218
pthread_cancel – досрочное завершение потока из другого пото-
ка или процесса;
pthread_exit – завершает поток, код завершения передается
функции pthread_join. Данная функция подобна функции exit, однако
вызов exit в «основном» процессе программы приведет к завершению
всей программы.
8.2.3 Запуск и завершение потока
Потоки создаются функцией pthread_create, имеющей следующую
сигнатуру:
int pthread_create (pthread_t* tid, pthread_attr_t* attr,
void*(*function)(void*), void* arg)
Данная функция определена в заголовочном файле <pthread.h>.
Первый параметр этой функции представляет собой указатель на пере-
менную типа pthread_t, которая служит идентификатором создаваемого
потока. Второй параметр – указатель на переменную типа pthread_attr_t –
используется для установки атрибутов потока. Третьим параметром
функции pthread_create должен быть адрес функции потока. Эта функ-
ция играет для потока ту же роль, что функция main для главной про-
граммы. Четвертый параметр функции pthread_create имеет тип void*.
Этот параметр может использоваться для передачи значения в функцию
потока. Вскоре после вызова pthread_create функция потока будет за-
пущена на выполнение параллельно с другими потоками программы.
Новый поток запускается не сразу после вызова pthread_create, по-
тому что перед тем, как запустить новую функцию потока, нужно вы-
полнить некоторые подготовительные действия, а поток-родитель при
этом продолжает выполняться. Необходимо учитывать данное обстоя-
тельство при разработке многопоточного приложения, в противном слу-
чае возможны серьезные ошибки при выполнении программы. Если при
создании потока возникла ошибка, то функция pthread_create возвраща-
ет ненулевое значение, соответствующее номеру ошибки.
Функция потока должна иметь сигнатуру вида
void* func_name(void* arg)
Имя функции может быть любым. Аргумент arg является указате-
лем, который передается в последнем параметре функции
pthread_create. Функция потока может вернуть значение, которое затем
может быть обработано другим потоком или процессом.
Функция, вызываемая из функции потока, должна обладать свой-
ством реентерабельности (этим же свойством должны обладать рекур-
сивные функции). Реентерабельная функция – это функция, которая мо-
Страницы
- « первая
- ‹ предыдущая
- …
- 216
- 217
- 218
- 219
- 220
- …
- следующая ›
- последняя »
