Вопрос о хранилище для конкретного потока Boost (boost / thread / tss.hpp)

Библиотека ускоренных потоков имеет абстракцию для конкретных потоков (локальных ) хранилище. Я бегло просмотрел исходный код, и кажется, что функциональность TSS может быть использована в приложении с любым существующим потоком, независимо от погоды, он был создан с помощью boost :: thread - т.е. это означает, что определенные обратные вызовы зарегистрированы в ядре для перехватить функцию обратного вызова, которая может вызвать деструктор любых объектов TSS, когда поток или процесс выходит за пределы области видимости. Я нашел эти обратные вызовы.

Мне нужно кэшировать HMAC_CTX из OpenSSL внутри рабочих потоков различных веб-серверов (см. this, подробно, вопрос о том, что я пытаюсь сделать), и поэтому я не контролирую время жизни потока - это делает веб-сервер. Поэтому я буду использовать функциональность TSS для потоков, созданных не с помощью boost :: thread.

Я просто хотел проверить свои предположения, прежде чем приступить к реализации логики кеширования, есть ли в моей логике какие-либо недостатки?


person Hassan Syed    schedule 12.04.2010    source источник


Ответы (2)


Ты прав. Вы можете использовать его для потоков, созданных не с помощью boost :: thread. Если вы посмотрите в test_tss.cpp, вы увидите, что они тестируют именно это, и он должен работать как с потоками POSIX, так и с Windows.

person Eddy Pronk    schedule 13.04.2010
comment
Спасибо ! Ваше глазное яблоко ценится. - person Hassan Syed; 13.04.2010

Это частично верно, поскольку деструктор не вызывается после завершения основного потока.

person Vicente Botet Escriba    schedule 19.04.2010