同一线程 ID 是否可以在同一进程中重复使用?
Can the same thread ID be reused within the same process?
我正在映射中存储每个线程的信息(map的键是线程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 与调用gettid(2)
返回的内核线程 ID 不同。
pthread
的文档(std::thread
和boost::thread
都使用(说,
线程 ID 保证仅在进程中是唯一的。 在连接已终止的线程或已分离的线程已终止后,可以重用线程 ID。
http://man7.org/linux/man-pages/man3/pthread_self.3.html
因此,是的,新线程可能会重用同一进程中死线程中的 ID。
相关文章:
- 异常属于C++中的线程还是进程
- 将更高的优先级设置为 boost::asio 线程处理进程
- 从不同进程中的另一个线程挂起/恢复线程或进程
- 多线程:线程或进程.h - C++
- BOOST线程:线程还是进程
- 将进程的执行从线程1转移到线程2
- std::async 如果线程是从 DLL 创建的,则会阻止进程退出?
- 优化吞吐量:多线程与多进程
- 多个线程/进程是否可以在不同步的情况下同时从/写入文件的非重叠区域?
- 使用 CommonAPI 编写服务器时C++服务器进程中创建了多少个线程?
- 睡眠线程或进程的指令是否在线程/进程休眠时继续执行?
- 多线程中的 std::basicstring 的运行时分段错误C++点燃进程
- 在 Linux 中从单独的单线程进程生成多线程进程时出现问题
- 当其中一个线程在 C++ 中使用 pthread 被杀死时,我如何保持进程的存活
- 异步是否总是在C++中使用另一个线程/内核/进程
- boost消息队列线程安全和进程安全吗?
- 当进程结束时,处于Sleep()中间的线程会发生什么
- 确定进程的输入线程 ID
- rusage的进程/线程的Cpu时间不可能
- 获取c++ Builder中执行进程/线程的ID