Темы здесь не имеют значения. Важно то, легко ли указать точку, в которой объект больше не используется.
Предположим, несколько разных объектов хотят использовать один и тот же объект. Это может быть пакет данных, или для ввода / вывода, или некоторый геометрический объект, или что-то еще. Вы хотите, чтобы общий объект был удален после удаления всех используемых объектов, а не тактового цикла до этого. Вместо того, чтобы выяснить, какой владелец объекта будет иметь самый длинный срок службы (и который может измениться, если вы измените программу или, возможно, через взаимодействие с пользователем), вы можете использовать shared_ptr для принудительного выполнения этого поведения.
Не имеет значения, находятся ли используемые объекты в одном или разных потоках. У объектов могут быть непредсказуемые времена жизни, даже если они все в одном потоке.