, Вы можете посмотреть определение в

я есть pthread_t, и я хотел бы изменить его привязку к процессору. Проблема в том, что я использую glibc 2.3.2, который не имеетpthread_setaffinity_np (), Это нормально, потому что pthread_setaffinity_np () сама по себе является оберткойsched_setaffinity (), который может быть вызван путем передачи идентификатора потока вместо идентификатора процесса, чтобы установить сходство для произвольного потока.

НО ... Идентификатор потока, с которым может работать sched_setaffinity, является идентификатором потока ОС, который вы можете получить изgettid () системный вызов.Это отличается от непрозрачного типа pthread_tи gettid () будет возвращать только идентификатор потокатекущая тема, Мне нужно иметь возможность установить сродство к процессору произвольного потока.

К сожалению, я не могу получить доступ к закрытым частям pthread, что позволило бы мне украсть идентификатор потока, передавая pthread_t вstruct pthread *, Тем лучше, я полагаю, поскольку полагаться на частные реализации требует дажеБольше беда.

Я также читал наpthread_getunique_np функция, однако это возвращает «уникальный интегральный идентификатор» - который я не верю, в какой-либо форме или форме, эквивалентной идентификатору потока ОС.

Отсюда возникает вопрос: как я могу получить идентификатор потока из произвольного pthread_t?

Ответы на вопрос(3)

Ваш ответ на вопрос