我有一个C++函数,它被一个我无法访问其代码的框架调用。如果该框架从多个线程中调用此代码,则需要在许多位置放置互斥锁。如果没有,我不想承担互斥锁的性能损失。考虑到我可以通过框架运行代码,有办法确定框架是否从多个线程中调用该函数吗?
我有一个C++函数,它被一个我无法访问其代码的框架调用。如果该框架从多个线程中调用此代码,则需要在许多位置放置互斥锁。如果没有,我不想承担互斥锁的性能损失。考虑到我可以通过框架运行代码,有办法确定框架是否从多个线程中调用该函数吗?
std::this_thread::get_id()
在每个函数调用时存储/记录此值。例如:void my_func()
{
std::cout << "my_func called from thread " << std::this_thread::get_id() << std::endl;
...
}
std::this_thread::get_id()
,就像Matt指出的那样。或者,如果您不想编辑任何代码,可以使用调试器!(lldb) breakpoint set --func-regex regular-expression
(gdb) rbreak regular-expression