thread::id
2024-08-25 15:02:38
线程标识符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();
最新文章
- 消息提示插件toastr.js与Messenger组件
- 使用UDP进行数据发送的实例一
- log4j日志输出到web项目指定文件夹
- [状压dp]经典TSP
- Android中使用proguardgui混淆jar包
- Centos环境下Tomcat启动缓慢
- mysql备份和恢复
- Ural 1297 Palindrome 【最长回文子串】
- A亚马逊WS网上系列讲座——怎么样AWS云平台上千万用户的应用建设
- Java多线程之Lock的使用(转)
- Ant学习总结3(很多的属性,用的时候方便查找)
- 彻底取消Myeclipse对js文件的校验
- makefile介绍1.0
- PHP中文网上的无限极分类
- CA 工作流程
- android修改getprop读取到的ro.build.fingerprint属性
- Codeforces Round #406 (Div. 1) B. Legacy 线段树建图跑最短路
- java利用Comparator接口对自定义数组排序
- Delphi XE3写DLL,用Delphi7调用,报错!
- C#各种泛型集合体验
热门文章
- [BZOJ2553][BeiJing2011]禁忌 dp+AC自动机+矩阵快速幂
- Qimage与IplImage的转换
- HDU 6206 Apple【计算几何+高精度Java】
- HDU 多校1.5
- 递归输入与引用传值(UVa839 Not so Mobile)
- 数据结构-二叉搜索树(BST binary search tree)
- NAT穿透工具pwnat
- luogu P1291 [SHOI2002]百事世界杯之旅
- luogu P3305 [SDOI2013]费用流
- [Contest20180316]Mythological IV