c++ - 同一个线程ID可以在同一个进程中重复使用吗?
问题描述
我将每个线程的信息存储在映射中(映射的键是线程 ID)。
但是,我想知道这是否真的是一个好主意。我看到每个线程都有不同的 ID,但这真的意味着“每个线程”还是“每个活动线程”。我的意思是,在同一个进程中,新线程可以使用与结束的旧线程相同的 ID 吗?
我在Android上体验到,对于两个不同的线程,奇怪syscall(__NR_gettid)
的是不同而boost::this_thread::get_id()
相同。它是一个“错误”,还是只是可能发生。
解决方案
在 Linux 上boost::this_thread::get_id
返回结果pthread_self()
:
线程 ID 保证仅在进程中是唯一的。在已终止的线程已加入或已分离的线程已终止后,可以重用线程 ID。
返回的
pthread_self()
线程 ID 与调用返回的内核线程 ID 不同gettid(2)
。
推荐阅读
- ios - Apple Silicon M1 上的 React Native - 链接库“libPods-ProjectName.a”缺少此目标所需的一个或多个架构:x86_64
- php - Laravel 迁移 - 一般错误:1215 无法添加外键约束
- html - 悬停状态前和变换比例后图像模糊
- parameters - 如何在 ADF 中获取 Azure 订阅和租户
- python-3.x - 在 SQLAlchemy 中关闭会话
- javascript - document.querySelectorAll() 的 TS-lint 错误
- excel - Excel - 我们如何使用 LAMBDA() 替换单元格中的多个字符或整个单词
- python - 使用 if 语句在 Python 中使用 Turtle 匹配 x/y 坐标
- c - 确保您正在通过 scanf 读取字符
- runtime-error - Pystan,运行时错误 - 初始化失败