首页 > 解决方案 > 同一个线程ID可以在同一个进程中重复使用吗?

问题描述

我将每个线程的信息存储在映射中(映射的键是线程 ID)。

但是,我想知道这是否真的是一个好主意。我看到每个线程都有不同的 ID,但这真的意味着“每个线程”还是“每个活动线程”。我的意思是,在同一个进程中,新线程可以使用与结束的旧线程相同的 ID 吗?

我在Android上体验到,对于两个不同的线程,奇怪syscall(__NR_gettid)的是不同而boost::this_thread::get_id()相同。它是一个“错误”,还是只是可能发生。

标签: c++multithreading

解决方案


在 Linux 上boost::this_thread::get_id返回结果pthread_self()

线程 ID 保证仅在进程中是唯一的。在已终止的线程已加入或已分离的线程已终止后,可以重用线程 ID。

返回的pthread_self()线程 ID 与调用返回的内核线程 ID 不同gettid(2)


推荐阅读