事情十这样的,有同事想要统计某些广告的点击,在多线程下运行,可能会同时操作同一个数据项,最早使用一个全局锁,效果不好,现在改成了细粒度锁,每一个数据项一个锁,但还是希望性能更好些。
我的想法是,使用Intel TBB的Atomic,这就避免了使用锁,同时性能也会提升,不过,到底能提升多少还要用数据说话。
1. 不使用锁的情况#include
#include
#include
using
namespace
std;
int
v = 0;
void
* tf(
void
* args)
{
for
(
int
i = 0;i < 100000;i++)
{
v += 1;
}
return
NULL;
}
int
main()
{
pthread_t tid;
vector vp;
for
(
int
i = 0;i < 100;i++)
{
pthread_create(&tid, NULL, tf, NULL);
vp.push_back(tid);
}
for
(
int
i = 0;i < 100;i++)
{
pthread_join(vp[i], NULL);
}
cout
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?