Для C++ есть
RAII и std::shared_ptr, которые полностью решают вопрос контроля за ресурсами, причем не только памяти, но и за любым ресурсом, нуждающимся в освобождении/закрытии (сокеты, файлы, пайпы, что угодно еще). А еще там есть реализации
lock-free контейнеров, которые радикально (раз этак в 10) ускоряют некоторые подходы к разделению данных в многопоточных средах. А можно еще и совместить оба подхода и получить указатели, которые можно трогать из нескольких потоков, и который умрет только когда последний поток перестанет с ним работать.