线程::get_id (c++ 11)锁是否空闲?

Is thread::get_id (C++11) lock free?

本文关键字:是否 c++ get id 线程      更新时间:2023-10-16

我想测试调用不同函数的线程我的一个类。我有一个临界时间线程,我不希望任何人调用可能从该线程调用new的函数。然而,由于这两个函数是公共的,我不能通过语言强制执行。

我的想法是测试线程id。假设我可以确保初始化线程id的调用在正确的线程中,我只需要在其他调用中调用thread::get_id()并与我保存的线程id进行比较。

问题是我也想在关键线程中测试这个ID,但我不能锁定那个线程。

因此我的问题是:thread::get_id()锁是自由的(什么可能是最糟糕的执行时间)?

对于thread::get_id()std::this_thread::get_id()是否无锁,甚至对于它们的复杂度,标准都没有给出保证。

恐怕你的问题的答案是具体实现的,取决于你的特定标准库和底层线程库。