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

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

 bool operator== (thread::id lhs, thread::id rhs) noexcept;
bool operator!= (thread::id lhs, thread::id rhs) noexcept;
bool operator< (thread::id lhs, thread::id rhs) noexcept;
bool operator>= (thread::id lhs, thread::id rhs) noexcept;
bool operator> (thread::id lhs, thread::id rhs) noexcept;
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(),这样就可以将主线程和子线程的工作统一到一个函数中,但是主线程和子线程的工作又不一样。

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

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

 
 

最新文章

  1. 消息提示插件toastr.js与Messenger组件
  2. 使用UDP进行数据发送的实例一
  3. log4j日志输出到web项目指定文件夹
  4. [状压dp]经典TSP
  5. Android中使用proguardgui混淆jar包
  6. Centos环境下Tomcat启动缓慢
  7. mysql备份和恢复
  8. Ural 1297 Palindrome 【最长回文子串】
  9. A亚马逊WS网上系列讲座——怎么样AWS云平台上千万用户的应用建设
  10. Java多线程之Lock的使用(转)
  11. Ant学习总结3(很多的属性,用的时候方便查找)
  12. 彻底取消Myeclipse对js文件的校验
  13. makefile介绍1.0
  14. PHP中文网上的无限极分类
  15. CA 工作流程
  16. android修改getprop读取到的ro.build.fingerprint属性
  17. Codeforces Round #406 (Div. 1) B. Legacy 线段树建图跑最短路
  18. java利用Comparator接口对自定义数组排序
  19. Delphi XE3写DLL,用Delphi7调用,报错!
  20. C#各种泛型集合体验

热门文章

  1. [BZOJ2553][BeiJing2011]禁忌 dp+AC自动机+矩阵快速幂
  2. Qimage与IplImage的转换
  3. HDU 6206 Apple【计算几何+高精度Java】
  4. HDU 多校1.5
  5. 递归输入与引用传值(UVa839 Not so Mobile)
  6. 数据结构-二叉搜索树(BST binary search tree)
  7. NAT穿透工具pwnat
  8. luogu P1291 [SHOI2002]百事世界杯之旅
  9. luogu P3305 [SDOI2013]费用流
  10. [Contest20180316]Mythological IV