std :: thread :: id在进程中是唯一的吗?

Ben*_*hon 7 stl c++11 stdthread

从我的经验来看,似乎是结果

std::this_thread::get_id()
Run Code Online (Sandbox Code Playgroud)

在整个过程中是独一无二的:每个进程的ID都不同.

这是否由标准保证?

PSI*_*Alt 5

std::thread 是在支持 pthreads 的环境中在 pthreads 之上实现的。所以它变得没有(可移植)保证。

来自pthread_self手册:

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

  • 呃...对于一个专门询问“标准是否保证这一点?”的问题,您怎么可能评论“我认为标准所说的并不很重要”?这是一个糟糕的答案,除非OP实际上并不关心标准所说的内容(正如接受你的答案所暗示的那样),在这种情况下,除了OP实际追求的内容之外,这是一个糟糕的问题。 (4认同)
  • 这并没有回答 C++ 标准要求什么的问题,它只是意味着如果 C++ 标准要求线程 ID 在进程之间是唯一的,则实现不能简单地重用 pthread ID。(但这确实使得 C++ 标准不要求线程 ID 在进程间保持唯一。) (3认同)
  • 您能否为“std::thread”是在可用的 pthreads 顶部实现的蛤蜊添加源?我无法想象标准要求这样做。我也相当确定 Windows 是一个反例,因为 pthreads 可用并且不用于实现 `std::thread`,它们都使用本机 WinApi 实现。但话又说回来,这并不是微软第一次不符合标准。 (2认同)