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();
联系方式:emhhbmdfbGlhbmcxOTkxQDEyNi5jb20=
分类:
c++
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2016-08-23 android mk odex问题 push apk 不生效
2015-08-23 判断浮点数是否为0