多线程安全计数器
2016-05-06 22:36
459 查看
在做性能测试时,需要统计运行一段时间内库使用锁的次数、获取时间戳的次数等。
在做这些库范围内的某个动作的次数统计时,如果库内是多线程且动作在多个线程内都出现。
可以使用下面的多线程安全的计数器
在需要统计的地方加上下行即可:
COUNT;
注:CCounter内部通过s_mutex保证了CCounter是线程安全的。
最后打印出的s_count值就是目标动作的统计计数值。
在做这些库范围内的某个动作的次数统计时,如果库内是多线程且动作在多个线程内都出现。
可以使用下面的多线程安全的计数器
/// 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值就是目标动作的统计计数值。
相关文章推荐
- Linux学习日志(六)
- 线程安全和可重入函数的区别与联系
- [LeetCode]046-Permutations
- 记录一个AS正则替换的方法
- CSS里常见的块级元素和行内元素
- 子网及子网掩码 问题
- linux命令(34):less命令
- 2015安徽省赛 H.数7
- 开发设计
- 专题三1015
- Phoenix二级索引(Secondary Indexing)的使用
- 专题3--1006
- ViewPager切换动画
- 学习iOS
- Linux之――――信号
- OpenSURF图像识别
- android appcompat_v7\res\values-v23错误解决
- android appcompat_v7\res\values-v23错误解决
- android appcompat_v7\res\values-v23错误解决
- android appcompat_v7\res\values-v23错误解决