Чтение онлайн

на главную - закладки

Жанры

UNIX: взаимодействие процессов

Стивенс Уильям Ричард

Шрифт:

Функция pthread_detach делает данный поток отсоединенным:

#include <pthread.h>

int pthread_detach(pthread_t tid);

/* Возвращает 0 в случае успешного завершения, положительное значение Еххх в случае ошибки */

Эта функция вызывается потоком при необходимости изменить собственный статус в форме

pthread_detach(pthread_self);

Функция pthread_exit

Одним из способов завершения потока является вызов pthread_exit:

#include <pthread.h>

void pthread_exit(void *status);

/* ничего не возвращает вызвавшему потоку */

Если поток не является отсоединенным, его идентификатор и статус завершения сохраняются для возвращения другому потоку, который может вызвать pthread_join.

Указатель status не должен быть установлен на локальный объект вызвавшего потока (типа автоматической переменной), поскольку этот объект уничтожается при завершении потока.

Поток может быть завершен двумя другими способами:

■ начальная функция потока (третий аргумент pthread_create) может вызвать return. Поскольку эта функция должна объявляться как возвращающая указатель на тип void, это возвращаемое значение становится статусом завершения потока;

■ функция main процесса может завершить работу или один из потоков может вызвать exit или _exit. При этом процесс завершает работу немедленно, вместе со всеми своими потоками.

ПРИЛОЖЕНИЕ В

Вспомогательные исходные коды

В.1. Заголовочный файл unpipc.h

Почти все программы книги подключают заголовочный файл unpipc.h, приведенный в листинге В.1. [1] Он подключает все стандартные системные заголовки, нужные большинству пpoгрaмм для работы с сетью, вместе с некоторыми общими системными заголовками. Он также определяет константы типа MAXLINE и прототипы функций ANSI С для функций, определенных в тексте (типа px_ipc_name), и для всех используемых в книге оберток. Мы не приводим эти прототипы.

1

Все исходные тексты, опубликованные в этой книге, вы можете найти по адресу http://www.piter.com/download.

Листинг В.1. Заголовочный файл unpipc.h

//lib/unpipc.h

1 /* Наш заголовочный файл. */

2 #ifndef __unpipc_h

3 #define __unpipc_h

4 #include "../config.h" /* параметры конфигурации ОС */

5 /* "../config.h" создается сценарием configure */

6 /* изменяя список директив #include, нужно изменять файлы

7 ../aclocal.m4 и ../configure.in. чтобы работал сценарий configure */

8 #include <sys/types.h> /* базовые типы данных */

9 #include <sys/time.h> /* структура timeval{} для select */

10 #include <time.h> /* timespec{} для pselect */

11 #include <errno.h>

12 #include <fcntl.h> /* отключение блокировки */

13 #include <limits.h> /* PIPE_BUF */

14 #include <signal.h>

15 #include <stdio.h>

16 #include <stdlib.h>

17 #include <string.h>

18 #include <sys/stat.h> /* константы режима доступа к файлу S_xxx */

19 #include <unistd.h>

20 #include <sys/wait.h>

21 #ifdef HAVE_MQUEUE_H

22 #include <mqueue.h> /* очереди сообщений Posix */

23 #endif

24 #ifdef HAVE_SEMAPHORE_H

25 #include <semaphore.h> /* семафоры Posix */

26 #ifndef SEM_FAILED

27 #define SEM_FAILED ((sem_t *)(-1))

28 #endif

29 #endif

30 #ifdef HAVE_SYS_MMAN_H

31 #include <sys/mman.h> /* разделяемая память Posix */

32 #endif

33 #ifndef MAP_FAILED

34 #define MAP_FAILED ((void *)(-1))

35 #endif

36 #ifdef HAVE_SYS_IPC_H

37 #include <sys/ipc.h> /* System V IPC */

38 #endif

39 #ifdef HAVE_SYS_MSG_H

40 #include <sys/msg.h> /* очереди сообщений System V */

41 #endif

42 #ifdef HAVE_SYS_SEM_H

43 #ifdef __bsdi__

44 #undef HAVE_SYS_SEM_H /* тонкий момент: прототип semctl в BSDI's содержит ошибки*/

45 #else

46 #include <sys/sem.h> /* семафоры System V */

47 #endif

48 #ifndef HAVE_SEMUN_UNION /* $$.It semun$$ */

49 union semun { /* определение объединения для semctl */

50 int val;

51 struct semid_ds *buf;

52 unsigned short *array;

Поделиться:
Популярные книги

Целеполагание

Владимиров Денис
4. Глэрд
Фантастика:
фэнтези
боевая фантастика
рпг
5.00
рейтинг книги
Целеполагание

Имперец. Том 3

Романов Михаил Яковлевич
2. Имперец
Фантастика:
боевая фантастика
попаданцы
альтернативная история
7.43
рейтинг книги
Имперец. Том 3

Авиатор: назад в СССР

Дорин Михаил
1. Авиатор
Фантастика:
попаданцы
альтернативная история
5.25
рейтинг книги
Авиатор: назад в СССР

Черный дембель. Часть 5

Федин Андрей Анатольевич
5. Черный дембель
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Черный дембель. Часть 5

Шатун. Лесной гамбит

Трофимов Ерофей
2. Шатун
Фантастика:
боевая фантастика
7.43
рейтинг книги
Шатун. Лесной гамбит

Точка Бифуркации III

Смит Дейлор
3. ТБ
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Точка Бифуркации III

Кай из рода красных драконов 2

Бэд Кристиан
2. Красная кость
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Кай из рода красных драконов 2

Кодекс Охотника. Книга III

Винокуров Юрий
3. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
7.00
рейтинг книги
Кодекс Охотника. Книга III

Мастер 8

Чащин Валерий
8. Мастер
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Мастер 8

Развод с драконом. Отвергнутая целительница

Шашкова Алена
Фантастика:
фэнтези
4.75
рейтинг книги
Развод с драконом. Отвергнутая целительница

Последний Паладин. Том 10

Саваровский Роман
10. Путь Паладина
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Последний Паладин. Том 10

Телохранитель Цесаревны

Зот Бакалавр
5. Герой Империи
Фантастика:
фэнтези
боевая фантастика
5.25
рейтинг книги
Телохранитель Цесаревны

Апокриф

Вайс Александр
10. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
космоопера
5.00
рейтинг книги
Апокриф

Тьма и Хаос

Владимиров Денис
6. Глэрд
Фантастика:
фэнтези
боевая фантастика
попаданцы
5.00
рейтинг книги
Тьма и Хаос