Thread Local в C++ как он есть

RU / День 3 / 10:45 / Зал 4

Доклад посвящен такой уже вроде бы устоявшейся фиче C++ как thread_local. Несмотря на то, что стандартизована она еще в C++11, мало кто понимает, что за машинерия за этим стоит. Как и в каких случаях мы получаем этот функционал бесплатно, а когда в ход идет тяжелая артиллерия. Доклад рассматривает имплементацию в Linux как платформы с самой полной поддержкой этой фичи языка. И к тому же продолжающая ее развивать для получения максимального перформанса.

В докладе будут рассмотрены:

  • раннее POSIX-решение;
  • имплементация в языке и 4 «традиционные» модели Thread Local;
  • более продвинутая, но еще не везде применяющаяся дескрипторная модель;
  • особенности при работе с thread_local объектами и подводные камни связанные с ними;
  • ассемблерные листинги с комментариями к ним;
  • бенчмарки.

Целевая аудитория: более опытные программисты с минимальными знаниями ассемблера x86. Из доклада аудитория почерпнет знания о том, какое реальное время жизни их thread_local-объектов. В каких случаях можно безболезненно пользоваться этой фичей, а в каких случаях можно потерять перформанс при использовании thread_local. И каким образом можно обойти эти проблемы.

Комментарий программного комитета

Все, что вы хотели узнать про устройство thread_local, но боялись спросить. Какие есть подходы к реализации и чего это стоит в случае использования. Какие есть подводные камни и что может пойти не так. Ассемблерные листинги и бенчмарки для самых недоверчивых прилагаются!