Предположим, у нас много пользовательских процессов, работающих в Linux.Каждый процесс имеет много работающих потоков.
Я могу получить идентификатор процесса, вызвав getpid()
, возвращаемое значение которого является целым числом.
Я могу получить идентификатор потока, вызвав pthread_self()
, возвращаемым значением которого является непрозрачный тип с именем pthread_t
.
Теперь мне нужно сохранить идентификатор процесса (целое число, как правило, 4 байта) и идентификатор потока (pthread_t
, нужно выяснить, сколько байтов) в общей памяти, чтобы позже я мог использовать двафрагменты идентификационной информации, чтобы идентифицировать этот конкретный поток и проверить, работает ли этот поток по-прежнему.
Я обнаружил, что многие онлайн-источники приводят pthread_t
к unsigned int
или unsigned long
.Поскольку я не хочу потери данных во время приведения, как мне поступить с данными pthread_t
, чтобы они представляли собой фрагмент данных фиксированного размера (как уже упоминалось, мне нужно хранить информацию о потоках в общей памяти).
Кроме того, как мне определить этот конкретный поток по комбинации идентификатора процесса и идентификатора потока позже?Как проверить, работает ли поток или нет?