跨进程的std :: thread :: id是否是唯一的?

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

std::this_thread::get_id()

在整个流程中是独一无二的:每个流程的id不同。

这是由标准保证的吗?


在支持pthread的环境中,std :: thread在pthread上实现。 所以它成为没有(便携式)保证。

从pthread_self手册:

线程ID保证只在一个进程内唯一。 一个
线程ID可能会在终止的线程连接后重新使用,或者分离的线程已终止。


线程ID的标准受让人在不同的线程中是唯一的,它也表示终止的线程ID可能会被重用。 它没有指定进程,也没有确认它们的存在,因此,它不能保证跨进程的唯一性。

30.3.1.1

  • 类型为thread :: id的对象为每个执行线程提供一个唯一的标识符,并为所有不代表执行线程的线程对象提供一个不同的值(30.3.1)。 每个执行线程都有一个关联的thread :: id对象,它不等于任何其他执行线程的线程:: id对象,并且不等于任何std ::线程对象的线程:: id对象不代表执行的线程。
  • thread :: id应该是一个可复制的类(第9章)。 该库可以重新使用不能再被连接的已终止线程的线程:: id的值。
  • 该标准还隐藏了thread :: id的实现,它可能是一个int或其他东西。

    链接地址: http://www.djcxy.com/p/29455.html

    上一篇: Is std::thread::id unique across processes?

    下一篇: Enum disassembled with javap doesn't show constructor arguments