Доступ к локальному потоку из другого потока

Как я могу прочитать / записать локальную переменную потока из другого потока? То есть в потоке AI хотел бы получить доступ к переменной в области локального хранилища потока B. Я знаю идентификатор другого потока.

Переменная объявлена ​​как __ thread в GCC. Целевая платформа - Linux, но независимость может быть приятной (однако это нормально для GCC).

Из-за отсутствия ловушки запуска потока я не могу просто отслеживать это значение в начале каждого потока. Таким образом необходимо отслеживать все потоки (а не только специально запущенные).

Оболочка более высокого уровня, такая как boost thread_local_storage или использование ключей pthread, не подходит. Мне требуется производительность при использовании истинной локальной переменной __ thread .


ПЕРВЫЙ ОТВЕТ НЕПРАВИЛЬНО : Нельзя использовать глобальные переменные для того, что я хочу делать. У каждого потока должна быть собственная копия переменной. Кроме того, эти переменные должны быть переменными __ thread по соображениям производительности (можно было бы использовать столь же эффективное решение, но я не знаю ни одного). Я также не контролирую точки входа в поток, поэтому у этих потоков нет возможности зарегистрировать какую-либо структуру.


Локальный поток не является частным : Еще одно недоразумение относительно локального потока переменные. Это ни в коем случае не какая-то частная переменная для потока. Это глобально адресуемая память с ограничением, что их время жизни привязано к потоку. Любая функция из любого потока, если ей дан указатель на эти переменные, может их изменить. Вопрос выше по существу о том, как получить этот адрес указателя.

18
задан ks1322 24 February 2017 в 18:14
поделиться