Здороваться не будем, сразу к делу - есть некий процесс/движок, который модульный и многопоточный, модули/плагины/so подцепляются/отцепляются в рантайме из любого ядра, в плагинах тоже крутится поток. В общем среда конкурентная,
Проблема вот в чём - из описания dlclose понятно, что завершение её вообще не гарантирует, что модуль выгрузился. В теории и промежутки между загрузить/выгрузить могут быть сколь угодно малыми. Как бы не получить какие-то битые данные в образе плагина (старый не успел выгрузиться, записи с другого ядра в каком-нибудь буфере ждут, а тут запрос на добавление плагина с последующей записью на другом ядре).
Можно ли как-то точно узнать, что плагин полностью выгрузился из адресного пространства, следующий dlopen даст девственно «чистую» память под сошкой? Т.е. я дернул dlclose, за что мне потом дергать в цикле чтобы понять, что процедура завершена полностью?