thread :: get_id(C ++ 11)是否可以锁定?

时间:2013-05-29 12:51:38

标签: c++ multithreading c++11

我想测试我的一个类的调用不同函数的线程。我有一个关键时间线程,我不希望任何人调用可以从该线程调用new的函数。但是,由于这两个功能是公开的,我无法用语言强制执行。

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

问题是我还想在关键线程中测试此ID,但我无法锁定该线程。

因此,我的问题是:thread::get_id()锁定是否自由(以及最糟糕的执行时间)?

1 个答案:

答案 0 :(得分:7)

标准无法保证thread::get_id()std::this_thread::get_id()是否无锁,甚至无论其复杂程度如何。

我担心您的问题的答案是特定于实现的,具体取决于您的特定标准库和底层线程库。