При прохождении кода glibc наблюдается строка, описывающая «Обратите внимание, что мы не сбрасываем флаг« used »в поле« tid ». Это делается ядром» в glibc_source (версия 2.21) ( ссылка на файл в glibc-источнике ) в строке 760.
Насколько я понимаю, glibc повторно использует стек потоков для T2, поддерживаемый в списке стеков кэша.Но прежде чем повторно использовать этот стек, он проверяет наличие поля tid в дескрипторе потока T1 (который уже сбрасывается в -1 после pthread_join в T1).
T1 - First thread.
T2 - Second thread created after T1 exited.
Согласно комментарию в файле (allocatestack.c: 760), поле 'tid' struct pthread сбрасывается ядром linux.Но, насколько я понимаю, поле tid сбрасывается pthread_join.
как поле 'tid' сбрасывается ядром?Пожалуйста, исправьте, если мое понимание неверно.