nettoobad 发表于 2008-11-28 20:16:16

关于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提供的代码就有问题。有哪位能解释一下。谢谢。

winston 发表于 2008-11-28 23:36:43

在DLL中使用单体,需要用ACE_Unmanaged_Singleton

nettoobad 发表于 2008-12-10 22:13:15

再论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 ());

这样生成唯一编号就放心了。

winston 发表于 2008-12-11 00:07:03

底层用MS的那个API,几千年也重复不了的。放心吧。
页: [1]
查看完整版本: 关于UUID的创建