Попробуйте добавить к вам модель: protected $guarded = ['_token'];
С тех пор pthread
с не должны быть реализованы с потоками Linux (или потоки ядра вообще, в этом отношении), и некоторые реализации являются полностью уровнем пользователя или смешанный, pthread
, S-интерфейс не обеспечивает функции для доступа к этим деталям реализации, поскольку это не было бы портативным (даже через pthread
реализации с на Linux). Библиотеки потока, которые используют их, могли обеспечить это как расширение, но там, кажется, не никто, которые делают.
Кроме доступа к внутренним структурам данных библиотеки поточной обработки (который Вы понятно не хотите, хотя с Вашими предположениями о привязке процессора и идентификаторах потока Linux, Ваш код не будет портативным так или иначе), Вы можете сыграть шутку во время создания при управлении кодом, который создает потоки:
Дают pthread_create()
функция записи, которая звонит gettid()
(который по тому, как Вам придется, вероятно, сделать использование syscall
макрос непосредственно, потому что это не всегда экспортируется libc
), хранит результат где-нибудь и затем вызывает исходную функцию записи. Если у Вас есть несколько потоков с той же функцией записи, можно передать увеличенный указатель в массив в arg
аргумент pthread_create
, который будет затем передан функции записи, которую Вы создали для хранения идентификатора потока в. Сохраните pthread_t
возвращаемое значение [1 110] в том же порядке, и затем Вы сможете искать идентификаторы потока Linux всех потоков, которые Вы создали, учитывая их pthread_t
значение.
, Стоит ли этот прием того, зависит от того, как важная установка привязки ЦП находится в Вашем случае, по сравнению с не доступом к внутренним структурам библиотеки потока или в зависимости от библиотеки потока, которая обеспечивает pthread_setaffinity_np
.
Я предложил бы простое обходное решение с общим международным массивом, где Вы могли записать идентификатор потока из потоков для доступа к нему позже.
Hope, которая помогает.