C++并发实战6:thread::id
来源:互联网 发布:天音淘宝店铺 编辑:程序博客网 时间:2024/06/06 14:27
线程标识符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();
- C++并发实战6:thread::id
- C++并发实战1:thread object
- C++并发实战7:thread::mutex
- C++并发实战2:thread::join和thread::detach
- Thread id
- C++并发实战3:向thread传递参数
- C++并发实战4:thread object is movable,not copyable
- 14.4.6 Configuring Thread Concurrency for InnoDB 配置Thread 并发
- Thread Id and Thread Handle
- c++thread学习(3)并发多线程系统开发过程
- 《Go语言编程》[4.4 并发通信]代码thread.c和thread.go错误
- get linux thread id
- 【Java并发编程实战】—–“J.U.C”:Condition
- 【Java并发编程实战】—–“J.U.C”:Semaphore
- 【Java并发编程实战】—–“J.U.C”:ReentrantReadWriteLock
- 【Java并发编程实战】-----“J.U.C”:CyclicBarrier
- 【Java并发编程实战】—–“J.U.C”:CyclicBarrier
- 【Java并发编程实战】—–“J.U.C”:CountDownlatch
- WinInet 使用
- 《UNIX环境高级编程》笔记--可靠信号
- Java 多线程讲解
- XML有关键字无法识别怎么办?
- 百度2014校园招聘笔试题
- C++并发实战6:thread::id
- 打印DATAgridview所见即所得
- C#WinForm窗体事件执行次序
- Linux DHCP & DNS
- eclipse上hdfs的javaapi调用文件或者获取节点信息没有权限
- QT中QMessageBox设计选择框
- AndroidAnnotations——Enhancing the Application class优化Application类
- 面试知识点总结之c++基础(二)
- 强大的vim配置文件,让编程更随意