Ваш пример звучит прямо для меня.
Однако проблема здесь не в атомарных операциях, а в ручном удалении объекта и последующей ссылке на объект, который скоро будет удален. Что если счетчик ссылок вместо 1 равен 8?
Вам необходимо избегать удаления и аннулирования объекта вручную, а также лучше использовать некоторые реализации интеллектуальных указателей, осведомленных о параллелизме, для обработки подсчета ссылок.
Всякий раз, когда указатель обнаруживает, что refcount равен нулю, вам нужно заблокировать объект, чтобы избежать ссылки на него другим потоком, очень похоже на двойную проверку блокировки для инициализации новой ссылки.