- don't override current application thread names
- set name for own threads only
//#define CV_LOG_STRIP_LEVEL CV_LOG_LEVEL_VERBOSE + 1
#include <opencv2/core/utils/logger.hpp>
+#include <opencv2/core/utils/trace.private.hpp>
+
//#define CV_PROFILE_THREADS 64
//#define getTickCount getCPUTickCount // use this if getTickCount() calls are expensive (and getCPUTickCount() is accurate)
void thread_body();
static void* thread_loop_wrapper(void* thread_object)
{
+#ifdef OPENCV_WITH_ITT
+ __itt_thread_set_name(cv::format("OpenCVThread-%03d", cv::utils::getThreadID()).c_str());
+#endif
((WorkerThread*)thread_object)->thread_body();
return 0;
}
namespace {
+
+#ifdef OPENCV_WITH_ITT
+bool overrideThreadName()
+{
+ static bool param = utils::getConfigurationParameterBool("OPENCV_TRACE_ITT_SET_THREAD_NAME", false);
+ return param;
+}
+#endif
+
static int g_threadNum = 0;
class ThreadID {
public:
id(CV_XADD(&g_threadNum, 1))
{
#ifdef OPENCV_WITH_ITT
- __itt_thread_set_name(cv::format("OpenCVThread-%03d", id).c_str());
+ if (overrideThreadName())
+ __itt_thread_set_name(cv::format("OpenCVThread-%03d", id).c_str());
#endif
}
};