关于UUID的创建
在一个项目中,我封装了一个ACE通讯的类,在动态库里,很奇怪,在dll生成UUID中要出错,相同的代码放在EXE中执行却正常的生成UUID,怪了。只好自己看ACE的源程序重新写了一边,就好了。看来在 开发中使用ACE提供的所谓单体对象有风险。std::string uuid_str;
ACE_Utils::UUID_Generator uuidout;
uuidout.init();
ACE_Utils::UUID uuid;
uuidout.generateUUID(uuid);
uuid_str.assign(uuid.to_string ()->c_str ());
这段代码在exe及dll中都正确,使用ACE提供的tests提供的代码就有问题。有哪位能解释一下。谢谢。 在DLL中使用单体,需要用ACE_Unmanaged_Singleton
再论UUID的生成
std::string uuid_str;ACE_Utils::UUID_GENERATOR::instance ()->init ();//这行关键,否则会在小范围内重复
ACE_Utils::UUID uuid;
ACE_Utils::UUID_GENERATOR::instance ()->generateUUID (uuid);
my_uuid_str.assign(uuid.to_string ()->c_str ());
这样生成唯一编号就放心了。 底层用MS的那个API,几千年也重复不了的。放心吧。
页:
[1]