相关疑难解决方法(0)

boost :: uuids :: random_generator和多线程的唯一性

当我使用单线程生成随机数时,4M uuids中没有重复生成,但如果我生成两个线程,每个1M,我看到大约16-20个重复.可能是什么原因?

class TestUuid 
{
 public:
  std::string GenerateUUid(){
       boost::uuids::uuid uid;
       {
          boost::mutex::scoped_lock(m_mRandomGen);
          uid = m_oRandomGen();
       }
       std::stringstream ss;
       ss << uid;
       return ss.str();
  }


  void TestUid(std::map<std::string, unsigned>& mUids, unsigned count){  
    for(unsigned i = 0; i < count; ++i) {
        std::string sUid = GenerateUUid();
        std::map<std::string, unsigned>::const_iterator it = mUids.find(sUid);           
        if(it == mUids.end()){
           mUids[sUid] = i;
        }else {
         std::cerr << "Duplicate uid:" << sUid << " found in  thread id:" << pthread_self() << ", counter:" << i << ", earlier counter:" << …
Run Code Online (Sandbox Code Playgroud)

c++ boost thread-safety boost-uuid

8
推荐指数
1
解决办法
3425
查看次数

标签 统计

boost ×1

boost-uuid ×1

c++ ×1

thread-safety ×1