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

Details

Thread Local в C++: как он есть, Евгений Ерохин

Доклад посвящен такой уже вроде бы устоявшейся фиче C++ как thread_local. Но несмотря на то что стандартизована она еще в C++11, мало кто понимает что за машинерия за этим стоит. Как и в каких случаях мы получаем этот функционал бесплатно, а когда в ход идет тяжелая артиллерия.
Доклад рассматривает имплементацию фичи в Linux, как платформы с самой полной поддержкой этой фичи языка. И к тому же продолжающая ее развивать для получения максимального перформанса.
- В докладе будут рассмотрено раннее POSIX решение.
- Имплементация в языке и 4 “Традиционные” модели Thread Local.
- Более продвинутая но еще не везде применяющаяся Дескрипторная модель.
- Рассмотрены особенности при работе с thread_local объектами и подводные камни связанные с ними.
- В течении доклада будут представлены ассемблерные листинги с коментариями к ним.
- Так же будет продемонстрированы бенчмарки.

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

О докладчике:
Старший разработчик в компании DINS. В данный момент занимаюсь разработкой сервиса передачи видео в реальном времени.
За плечами более 10 лет опыта работы в Paragon Software на позиции ведущего разработчика. Разрабатывал драйвера файловых систем под macOS, занимался имплементацией файловых систем, системы снепшотинга блочных (дисковых) устройств, boot загрузчика, реверс-инженирингом и другими низкоуровневыми задачами.
В свободное время занимаюсь изучением устройства операционных систем и процессорных архитектур.