【发布时间】:2021-12-31 02:52:53
【问题描述】:
在以下代码中,.get_id() 调用在 CentOS 上运行时返回相同的值;但在 Windows 上,相同的代码返回不同的值。
为什么?
#include <unistd.h>
#include <iostream>
#include <thread>
void dosomework()
{
std::cout << std::this_thread::get_id() << std::endl;
}
int main()
{
for (int i = 0; i < 10; ++i){
std::thread connectthread([](){
dosomework();
});
std::cout << "connectthread:" << connectthread.get_id() << std::endl;
connectthread.join();
sleep(1000);
}
return 0;
}
【问题讨论】:
-
由于每个线程都是在开始下一个线程之前加入的,最明显的解释是终止线程的id被简单地回收了。
-
你的意思是
dosomework函数打印的id和connectthread.get_id()部分不同吗? -
@FantasticMrFox 好吧,在我的 Windows 系统中,这两个值对于每个线程都是相同的(应该如此)。只是它们从一个循环到下一个循环是不同的。