LinuxThreads/NPTL: надежно ли присвоить постоянное значение 0 переменной типа pthread_t (игнорируя соответствие POSIX)
Я рассматриваю код, использующий потоки POSIX и работающий на платформе Linux с использованием более старой реализации LinuxThreads для потоков POSIX (кросс-скомпилированный код, целевой MIPS/uClibc, если это имеет какое-либо значение). Если есть какая-либо разница в ответе для реализации NPTL, я хотел бы знать это также для полноты картины. Вопрос касается типа pthread_t
который я могу видеть из заголовочных файлов библиотеки C, которые будут определены как unsigned long int
как для uClibc, так и для glibc (на самом деле встроенная библиотека GNU C - у меня только Ubuntu доступна в качестве ссылки).
На вопрос... Переменная типа pthread_t
используется для хранения владельца собственности. Меня беспокоит то, что я вижу назначение 0
отметить, что ни один поток не владеет этим свойством; это беспокоит меня, потому что я знаю, что стандарт POSIX утверждает, что pthread_t
Тип непрозрачен, и мы не должны делать никаких предположений о типе. Я знаю, что было бы лучше, например, использовать логический флаг, чтобы определить, принадлежит ли свойство потоку. Я придерживаюсь мнения, что код должен быть исправлен в соответствии со стандартом POSIX в более долгосрочной перспективе (если не по другим причинам, а для спасения будущих поколений от размышлений над надежностью кода), но теперь для кратковременной работы мне нужно знать ответ на следующий вопрос: можем ли мы предположить, что pthread_t
ценность 0
никогда не может быть установлен pthread_create(3)
в этой платформе (единственный способ, которым мы должны получить pthread_t
значение, насколько я знаю), а впоследствии: это присвоение значения 0
надежный способ пометить имущество не используется на этой платформе?