Самьюэл Алекс
Шрифт:
После создания поток начинает выполнять потоковую функцию. Это самая обычная функция, которая содержит код потока. По завершении функции поток уничтожается. В Linux потоковые функции принимают единственный параметр типа
Функция
■ Указатель на переменную типа
■ Указатель на объект атрибутов потока. Этот объект определяет взаимодействие потока с остальной частью программы. Если задать его равным
■ Указатель на потоковую функцию. Функция имеет следующий тип:
■ Значение аргумента потока (тип
Функция
Программа, представленная в листинге 4.1, создает поток, который непрерывно записывает символы 'x' в стандартный поток ошибок. После вызова функции
Компиляция и компоновка программы осуществляются следующим образом:
Запустите программу, и вы увидите, что символы 'x' и 'o' чередуются самым непредсказуемым образом.
При нормальных обстоятельствах поток завершается одним из двух способов. Один из них — выход из потоковой функции. Возвращаемое ею значение считается значением, передаваемым из потока в программу. Второй способ— вызов специальной функции
4.1.1. Передача данных потоку
Потоковый аргумент — это удобное средство передачи данных потокам. Но поскольку его тип
Благодаря наличию потокового аргумента появляется возможность использовать одну и ту же потоковую функцию с разными потоками. Все они будут выполнять один и тот же код, но с разными данными.