Есть ли лучшая практика для управления объектом, совместно используемым двумя или более другими объектами. Даже при работе на другом потоке?
Например, создается A и указатель на него дается B и C.
ObjA A = новый ObjA ();
B-> GiveObj (А);
С-> GiveObj (А);
Теперь, как я могу удалить objA?
До сих пор я думал о том, сколько мониторов у него есть, и когда этот счетчик равен 0, он удаляет это (например, когда передается A, получатель вызывает A-> Aquire (), когда это делается вызовите A-> release ();
Или я мог бы сказать B-> RemoveObj (A); и C-> RemoveObj (A); Проблема в том, что если B или C работают в другом потоке, я не могу удалить A, пока они не закончили с A, и они не увидели вызов RemoveObj. (Которые требуют кучу грязных флагов).
Был бы хороший способ сделать это, возможно, с помощью Signal / Slot?
Спасибо