特效需要一个特效ID,我一开始想用时钟的值作为唯一id。毕竟每次申请的时间都不一样。直接就用毫秒值作为id了
后来发现特效数量不对。就猜想到了这个问题。范围施加特效。是一个循环,执行非常快速,所以短时间内会有很多新建特效id。时钟的毫秒值都一样导致id重复了。
最后还是用mt19937随机数生成器生成唯一id
std::random_device seed;
std::mt19937 generator(seed());
std::uniform_int_distribution<int> distribution(0,2147483647);
...
unsigned int id = distribution(generator);实际上mt19937随机数生成器虽然范围很广,但是也不能用于生成唯一id,应该使用uuid库生成真正的唯一id