LINUX.ORG.RU

[C++,TLS,boost::thread_specific_ptr] Можно ли получить данные, записанные потоком в TLS, вне его?


0

1

Если да, то каким образом? У thread_specific_ptr есть метод get, и операторы -> и *, но как узнать снаружи, у какого потока я прошу данные?

Если нет, то какая разница между TLS и локальными переменными функции, выполняющейся в потоке?

какая разница между TLS и локальными переменными функции, выполняющейся в потоке?

функция может быть и не одна (одна только точка входа); TLS доступен откуда угодно в рамках потока

jtootf ★★★★★
()
Ответ на: комментарий от jtootf

То есть, если я «снаружи» потоков устанавливаю значение некоей переменной в TLS, а затем каждый поток изменит его, то изменения будут видны только в контексте отдельного потока? Здакий copy-on-write?

one_more_hokum ★★★
() автор топика
Ответ на: комментарий от Begemoth

> то потоки его не увидят

И действительно не видят. А снаружи потоков в переменной TLS видится последнее установленное каким-либо потоком значение? Или вообще некорректно вне контекста потоков смотреть на переменные TLS?

one_more_hokum ★★★
() автор топика
Ответ на: комментарий от one_more_hokum

Или вообще некорректно вне контекста потоков смотреть на переменные TLS?

Мешанина какая-то, как минимум 1 поток есть всегда. TLS - это набор глобальных переменных, но их значение в каждом потоке своё и недоступно из других потоков.

Begemoth ★★★★★
()
Ответ на: комментарий от Begemoth

> их значение в каждом потоке своё и недоступно из других потоков

Угу. Ясно-понятно-спасибо. :-)

one_more_hokum ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.