如何识别线程?步骤说明及C++示例解析
如何在C++中识别特定线程
嘿,这事儿其实很简单,核心就两步:
- 先获取并保存你要识别的目标线程的ID
- 在线程执行的函数内部,再拿到当前线程的ID,和之前存的ID做对比就行
下面是完整的代码示例(出自Josuttis所著《The C++ Standard Library》第二版):
#include <iostream> #include <thread> // 全局变量用来存储我们要识别的master线程的ID std::thread::id master_tid; void doSomething() { // 获取当前线程的ID,和master_tid对比 if (std::this_thread::get_id() == master_tid) { std::cout << "这是我们要识别的master线程哦!" << std::endl; } else { std::cout << "这是slave线程~" << std::endl; } } int main() { // 创建master线程 std::thread master(doSomething); // 保存master线程的ID master_tid = master.get_id(); // 创建另一个slave线程 std::thread slave(doSomething); // 等待两个线程执行完毕 master.join(); slave.join(); return 0; }
简单解释下逻辑:
- 我们用全局的
std::thread::id类型变量master_tid来存目标线程的ID,这样线程函数也能直接访问到 - 在
main函数里启动master线程后,立刻用get_id()拿到它的唯一标识并保存起来 - 线程函数
doSomething里,std::this_thread::get_id()能获取到当前运行这个函数的线程ID,和master_tid一对比,就能判断是不是我们要找的目标线程了
内容的提问来源于stack exchange,提问作者SSteven
相关产品推荐
相关产品推荐

