Вы использовали бы вложенный класс для создания (маленького) класса помощника, это требуется, чтобы реализовывать основной класс. Или например, для определения интерфейса (класс с абстрактными методами).
В этом случае, основной недостаток вложенных классов - то, что это делает его тяжелее, чтобы снова использовать их. Возможно, требуется использовать класс VideoDecoder в другом проекте. При создании его вложенным классом VideoPlayer Вы не можете сделать этого изящным способом.
Вместо этого вставляет отдельные .h/.cpp файлы других классов, которые можно тогда использовать в классе VideoPlayer. Клиент VideoPlayer теперь только должен включать файл, который объявляет VideoPlayer, и все еще не должен знать о том, как Вы реализовали его.
Я так думал до недавнего времени. Неустойчивые чтения - это не то, что вы думаете - они не гарантируют, что они получат самое последнее значение; они о том, чтобы удостовериться, что никакое чтение, которое происходит позже в программном коде, не перемещается до этого чтения. Это то, что гарантирует спецификация - и аналогично для изменчивой записи она гарантирует, что никакая более ранняя запись не будет перемещена в после изменчивой.
Вы не один , подозревая этот код , но Джо Даффи объясняет это лучше, чем я :)
Мой ответ - отказаться от кодирования без блокировки, кроме использования таких вещей, как PFX, которые предназначены для того, чтобы изолировать меня от него. Модель памяти слишком сложна для меня - оставлю это экспертам,