diff --git a/src/factory/FieldCreateFactory.cpp b/src/factory/FieldCreateFactory.cpp index fc4e444..f6fb158 100644 --- a/src/factory/FieldCreateFactory.cpp +++ b/src/factory/FieldCreateFactory.cpp @@ -24,6 +24,7 @@ #include #include #include +#include using std::tr1::static_pointer_cast; using std::size_t; @@ -1493,6 +1494,7 @@ struct field_factory { FieldCreatePtr fieldCreate; field_factory() :fieldCreate(new FieldCreate()) { registerRefCounter("Field", &Field::num_instances); + registerRefCounter("Thread", &Thread::num_instances); } }; } diff --git a/src/misc/pv/thread.h b/src/misc/pv/thread.h index 5002dd0..b58b613 100644 --- a/src/misc/pv/thread.h +++ b/src/misc/pv/thread.h @@ -189,6 +189,8 @@ public: */ ~Thread(); + static size_t num_instances; +private: Config::p_owned_runner_t p_owned; }; diff --git a/src/misc/thread.cpp b/src/misc/thread.cpp index 930c21e..fc39d83 100644 --- a/src/misc/thread.cpp +++ b/src/misc/thread.cpp @@ -7,6 +7,7 @@ #include #define epicsExportSharedSymbols #include +#include namespace epics { namespace pvData { @@ -54,6 +55,7 @@ void Thread::Config::x_setdefault() (*this).stack(epicsThreadStackSmall); } +size_t Thread::num_instances; Thread::Config::Config() {this->x_setdefault();} @@ -105,6 +107,7 @@ Thread::Thread(std::string name, epicsThreadGetStackSize(stkcls), priority) { + REFTRACE_INCREMENT(num_instances); this->start(); } @@ -117,6 +120,7 @@ Thread::Thread(Runnable &runnable, stksize, priority) { + REFTRACE_INCREMENT(num_instances); this->start(); } @@ -124,6 +128,7 @@ Thread::Thread(Config& c) :epicsThread(c.x_getrunner(), c.p_strm.str().c_str(), c.p_stack, c.p_prio) { + REFTRACE_INCREMENT(num_instances); #if __cplusplus>=201103L p_owned = std::move(c.p_owned_runner); #else @@ -136,6 +141,7 @@ Thread::Thread(Config& c) Thread::~Thread() { this->exitWait(); + REFTRACE_DECREMENT(num_instances); } }} // epics::pvData