Доклад посвящен такой уже вроде бы устоявшейся фиче C++ как thread_local. Несмотря на то, что стандартизована она еще в C++11, мало кто понимает, что за машинерия за этим стоит. Как и в каких случаях мы получаем этот функционал бесплатно, а когда в ход идет тяжелая артиллерия. Доклад рассматривает имплементацию в Linux как платформы с самой полной поддержкой этой фичи языка. И к тому же продолжающая ее развивать для получения максимального перформанса.
В докладе будут рассмотрены:
- раннее POSIX-решение;
- имплементация в языке и 4 «традиционные» модели Thread Local;
- более продвинутая, но еще не везде применяющаяся дескрипторная модель;
- особенности при работе с thread_local объектами и подводные камни связанные с ними;
- ассемблерные листинги с комментариями к ним;
- бенчмарки.
Целевая аудитория: более опытные программисты с минимальными знаниями ассемблера x86. Из доклада аудитория почерпнет знания о том, какое реальное время жизни их thread_local-объектов. В каких случаях можно безболезненно пользоваться этой фичей, а в каких случаях можно потерять перформанс при использовании thread_local. И каким образом можно обойти эти проблемы.
Комментарий программного комитета
Все, что вы хотели узнать про устройство thread_local, но боялись спросить. Какие есть подходы к реализации и чего это стоит в случае использования. Какие есть подводные камни и что может пойти не так. Ассемблерные листинги и бенчмарки для самых недоверчивых прилагаются!
Скачать презентацию