Можно ли разделить один экземпляр "бога" среди всех, кто ссылается на этот код, для помещения в общий объект?
god* _god = NULL;
extern "C"
{
int set_log_level(int level)
{
if(_god == NULL) return -1;
_stb->log_level(level);
return 0;
}
int god_init(){
if(_god == NULL){
_god = new god(); //Magic happens here
}
}
}
При условии, что я выполняю синхронизацию блокировки в начале каждой функции, и учитывая, что сам Бог может создавать новые / malloc другие вещи, но эти вещи никогда не будут возвращены самим вызывающей стороне (Бог mallocs только для внутреннего использования), что это самый простой способ сделать это, если это возможно.
Как это можно распространить на произвольное количество программ, связанных с этой общей библиотекой?