【发布时间】:2008-11-11 15:05:16
【问题描述】:
是否可以在链接到此代码的每个人之间共享一个“上帝”实例,以放置在共享对象中?
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
}
}
}
假设我在每个函数的开头都进行了锁同步,并且考虑到上帝本身可以 new/malloc 其他东西,但是那些东西永远不会自己返回给调用者(上帝 malloc 仅供内部使用),什么如果可能的话,这是最简单的方法。
如何将其扩展到链接到此共享库的任意数量的程序?
【问题讨论】:
-
这通常被称为单例。
-
不——他希望在所有链接的进程之间共享一个实例。
标签: c++ memory shared-libraries