事情十这样的,有同事想要统计某些广告的点击,在多线程下运行,可能会同时操作同一个数据项,最早使用一个全局锁,效果不好,现在改成了细粒度锁,每一个数据项一个锁,但还是希望性能更好些。
我的想法是,使用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
关注
打赏
热门博文
- DevOps实践教程 华为云 系列教程2021 合集
- ❤️Python Django网站开发 2021年最新版教程 合集❤️
- ❤️java多线程并发编程入门 教程合集❤️
- ❤️区块链Hyperledger Fabric 老版本 1.1.0 快速部署安装 教程合集❤️
- ❤️Docker教程小白实操入门 教程合集❤️
- ❤️微信小程序 云开发 教程合集(视频+图文)免费❤️
- C++ boost::asio::io_service创建线程池thread_group简单实例
- C++ error: ‘shared_ptr’ was not declared in this scope
- git 代码回滚回退到指定版本 并 提交
- C++ 得到map中最后一个元素