c语言中唯一标识符,C语言中的惯用语“保证唯一”标识符

我认为你已经通过查找Boost :: Uuid解决了这个问题,除了你要求回收已经生成的标识符.

When UUIDs are generated by one of the

defined mechanisms, they are either

guaranteed to be unique, different

from all other generated UUIDs (that

is, it has never been generated before

and it will never be generated again),

or it is extremely likely to be unique

(depending on the mechanism).

如果您一心想要回收并重新使用现有标识符,我想您可以维护一段时间内建立一个UUID池,只有在您需要时才会生成新UUID并发现池是空的.但是我无法想象这会产生一个新的UUID.

编辑:你评论说你需要保证唯一性.实际上,在以编程方式生成唯一标识符时,您永远不会得到一个.实际上,您将生成的ID存储在具有有限大小的数据类型中,因此您可以生成的可能ID集也是有限的.恕我直言,你能做到的最好的就是在容差阈值内模拟唯一性.

你可以这样做

>使用一种技术可以使重复的UUID非常遥远(这就是Boost :: UUID将要做的事情);

>在一些其他逻辑中包含高度可能要独特的UUID的生成,该逻辑在已生成的UUID列表中查找新生成的UUID,以消除新的UUID重复的微小机会.显然,当您在列表中接近大量UUID时,这样做的实用性会降低.你预计会产生多少?

>如果你想要真正大量的唯一ID,比本机类型更大,你可以实现一种管理内存并进行必要数学运算的类型,只生成顺序ID,或者你可以使用像GNU Bignum Library这样的东西为你做这件事.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值