Основы программирования в Linux
Шрифт:
Когда разрабатывались первые версии библиотечных подпрограмм UNIX и POSIX, предполагалось, что в каждом процессе будет только один поток исполнения. Яркий пример — переменная
Вам нужны реентерабельные подпрограммы. Реентерабельный программный код может вызываться несколько раз либо разными потоками, либо каким-то образом вложенными вызовами и при этом работать корректно. Следовательно, реентерабельная часть программного кода обычно должна применять локальные переменные таким образом, чтобы любой и каждый вызов кода получал собственную уникальную копию данных.
В многопоточных программах вы сообщаете компилятору, что вам нужно это средство, определяя в вашей программе макрос
Некоторые функции получают безопасный реентерабельный вариант прототипа или объявления. При этом имя функции остается обычно прежним, но в конце добавляется суффикс
Некоторые функции из файла stdio.h, которые обычно реализованы как макросы, становятся соответствующими реентерабельными безопасными функциями.
Переменная
Включение файла pthread.h предоставляет другие прототипы и определения, которые нужны в вашем программном коде, во многом так же, как делает stdio.h для подпрограмм стандартного ввода и вывода. В заключение следует убедиться в том, что вы включили в программу соответствующий заголовочный файл потоков и скомпоновали программу с подходящей библиотекой потоков, в которой реализованы функции семейства
Прототип выглядит внушительно, но функцию очень легко применять. Первый аргумент — указатель на переменную типа
Предыдущая строка просто говорит о том, что вы должны передать адрес функции, принимающей бестиповой указатель
Возвращаемое значение равно 0 в случае успеха и номеру ошибки, если что-то пошло не так. В интерактивном справочном руководстве есть подробная информация об ошибочных ситуациях для этой и других функций, применяемых в данной главе.
Когда поток завершается, он вызывает функцию
Функция
Первый параметр — это поток, который следует ждать, идентификатор, который для вас добывает функция
Выполните упражнение 12.1.
Данная программа создает один дополнительный поток, показывает, что он совместно с исходным потоком использует переменные и заставляет новый поток вернуть результат исходному потоку. Далее приведена программа thread1.с.
Вожделеющее семя
Проза:
современная проза
рейтинг книги
UNIX: взаимодействие процессов
Компьютеры и Интернет:
программирование
рейтинг книги
Лекарь Империи 5
5. Лекарь Империи
Фантастика:
городское фэнтези
аниме
героическая фантастика
попаданцы
рейтинг книги
Преисподняя
54. Книга-загадка, книга-бестселлер
Фантастика:
научная фантастика
рейтинг книги
Хроника семьи Паскье. Гаврский нотариус. Наставники. Битва с тенями
Проза:
классическая проза
семейный роман
рейтинг книги
Локки 5. Потомок бога
5. Локки
Фантастика:
юмористическое фэнтези
аниме
фэнтези
рейтинг книги
Том 2. Рассказы 1889-1903
2. Собрание сочинений в пяти томах
Проза:
русская классическая проза
рейтинг книги
Одна – здесь – жизнь
Проза:
русская классическая проза
рейтинг книги
Безмолвная
9. Джейн Риццоли и Маура Айлс
Детективы:
триллеры
рейтинг книги
Дюна
1. Хроники Дюны
Фантастика:
эпическая фантастика
рейтинг книги
Возлюби болезнь свою
Научно-образовательная:
психология
рейтинг книги