три года. Пока вышли две такие публикации: C++14 в 2014 году и C++17 — в 2017-м, а также несколько технических спецификаций с описаниями расширений стандарта C++.
Из самых значимых новшеств в стандарте C++11 стоит отметить поддержку многопоточных программ. Впервые Комитет признал существование многопоточных приложений на этом языке и добавил в библиотеку средства для написания многопоточных приложений. Появилась возможность писать на C++ многопоточные программы с гарантированным поведением, не полагаясь на платформенные
ий можно избежать, присвоив функциональному объекту имя, как было показано ранее, с помощью дополнительных скобок или нового унифицированного синтаксиса инициализации, например:
std::thread my_thread((background_task()));
std::thread my_thread{background_task()};
В первом примере дополнительные скобки не позволяют интерпретировать код как объявление функции, разреша
Листинг 3.2. Случайная передача за пределы защиты ссылки на защищаемые данные
Поэтому наряду с новой моделью памяти поставляется и комплексная библиотека атомарных операций, допускающая непосредственное управление отдельными битами и байтами, а также синхронизацию между потоками и отображение любых изменений.
Эти затраты являются платой за абстракцию.
Специалисты Комитета по стандартизации C++ знали об этом, разрабатывая стандартную библиотеку C++ в целом и стандартную библиотеку потоков C++ в частности.
синхронизации операций между потоками (см. главу 4)
новый тип мьютекса для защиты совместно используемых данных (см. главу 3).
полный набор параллельных алгоритмов (см. главу 10).
Особенно у тех, кто пытается повысить производительность, используя знания об аппаратных особенностях процессора, или пишет кросс-платформенный код, в котором поведение компиляторов варьируется в зависимости от используемой платформы.