找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 3671|回复: 3

关于UUID的创建

[复制链接]
发表于 2008-11-28 20:16:16 | 显示全部楼层 |阅读模式
在一个项目中,我封装了一个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提供的代码就有问题。有哪位能解释一下。谢谢。
发表于 2008-11-28 23:36:43 | 显示全部楼层
在DLL中使用单体,需要用ACE_Unmanaged_Singleton
 楼主| 发表于 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 ());

这样生成唯一编号就放心了。
发表于 2008-12-11 00:07:03 | 显示全部楼层
底层用MS的那个API,几千年也重复不了的。放心吧。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-11-23 04:01 , Processed in 0.016753 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表