多執行緒安全計數器
阿新 • • 發佈:2019-02-12
在做效能測試時,需要統計執行一段時間內庫使用鎖的次數、獲取時間戳的次數等。
在做這些庫範圍內的某個動作的次數統計時,如果庫內是多執行緒且動作在多個執行緒內都出現。
可以使用下面的多執行緒安全的計數器
/// Counter.h #ifndef __COUNTER_H__ #define __COUNTER_H__ #include "Mutex.h" class CCounter { CCounter(); ~CCounter(); public: static void count(); private: static CMutex s_mutex; static int s_count; }; #define COUNT (CCounter::count();) #endif
/// Counter.cpp
#include "Counter.h"
CMutex CCounter::s_mutex;
int CCounter::s_count;
void CCounter::count()
{
s_mutex.lock();
s_count++;
printf("s_count:%d\n", s_count);
s_mutex.unlock();
}
在需要統計的地方加上下行即可:
COUNT;
注:CCounter內部通過s_mutex保證了CCounter是執行緒安全的。
最後打印出的s_count值就是目標動作的統計計數值。