1. 程式人生 > >多執行緒安全計數器

多執行緒安全計數器

在做效能測試時,需要統計執行一段時間內庫使用鎖的次數、獲取時間戳的次數等。

在做這些庫範圍內的某個動作的次數統計時,如果庫內是多執行緒且動作在多個執行緒內都出現。

可以使用下面的多執行緒安全的計數器

/// 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值就是目標動作的統計計數值。