我想测试我的一个类的调用不同函数的线程。我有一个关键时间线程,我不希望任何人调用可以从该线程调用new
的函数。但是,由于这两个功能是公开的,我无法用语言强制执行。
我的想法是来测试线程ID 。假设我可以确保初始化线程id的调用是在正确的线程中,我只需要在其他调用中调用thread::get_id()
并与我保存的线程ID进行比较。
问题是我还想在关键线程中测试此ID,但我无法锁定该线程。
因此,我的问题是:thread::get_id()
锁定是否自由(以及最糟糕的执行时间)?
答案 0 :(得分:7)
标准无法保证thread::get_id()
和std::this_thread::get_id()
是否无锁,甚至无论其复杂程度如何。
我担心您的问题的答案是特定于实现的,具体取决于您的特定标准库和底层线程库。