zoukankan      html  css  js  c++  java
  • thread::id

      线程标识符id可以通过thread::get_id()获得,若thread obejct没有和任何线程关联则返回一个NULL的std::thread::id表示没有任何线程。当前线程若想获得自己的id可以调用std::this_thread::get_id()。

             thread::id对象可以被任意复制和比较。这里的比较语义是:若相等表示是同一个线程或者都没有线程,不等表示不同的线程。

    1 bool operator== (thread::id lhs, thread::id rhs) noexcept;  
    2 bool operator!= (thread::id lhs, thread::id rhs) noexcept;  
    3 bool operator< (thread::id lhs, thread::id rhs) noexcept;  
    4 bool operator>= (thread::id lhs, thread::id rhs) noexcept;  
    5 bool operator> (thread::id lhs, thread::id rhs) noexcept;  
    6 bool operator>= (thread::id lhs, thread::id rhs) noexcept  

       thread::id可以用于关联容器的key,可以用于排序,用于比较等用途。比如std::hash<std::thread::id>

            主线程在启动子线程之前记录下自己的master_thread,然后每个子线程启动时都去比较这个ID,若不是则执行do_common_work(),主线程则执行do_master_thread_work(),这样就可以将主线程和子线程的工作统一到一个函数中,但是主线程和子线程的工作又不一样。

    1 std::thread::id master_thread;  
    2 void some_core_part_of_algorithm()  
    3 {  
    4  if(std::this_thread::get_id()==master_thread)  
    5  {  
    6  do_master_thread_work();  
    7  }  
    8  do_common_work();  
    9 }  
        thread::id可以作为关联容器的key,关联容器中可以根据key来存放线程的私有数据。

              输出线程标识符std::cout<<std::this_thread::get_id();

     
     
  • 相关阅读:
    NOIP2006代码及简析
    设计模式的原则
    UML应用
    关系
    活动图
    状态图
    UML概序
    UML基本图示
    用例
    介绍一个好的英语学习网站!
  • 原文地址:https://www.cnblogs.com/zl1991/p/7418999.html
Copyright © 2011-2022 走看看