Loading... 英特尔[TBB](https://intel.cn/content/www/cn/zh/developer/tools/oneapi/onetbb.html)库是英特尔发布的高并发适当抽象化、模板化的c++模块库,支持自动均衡负载以及CPU绑定等。 最近在开发一个高并发的多线程缓存交换控件,需要在hashmap同时访问和修改不同键值时不引发竞争关系,以提高程序运行效率,但是QT平台中QHash不是线程安全的,加上读写锁又会导致多线程读写性能下降,在网上鼓捣一番发现了英特尔的TBB库有一个**concurrent_hash_map**,符合我的需求,下面进入正题。 首先下载TBB库安装程序,[下载链接](intel.cn/content/www/cn/zh/developer/tools/oneapi/onetbb.html),下载完成打开界面如下: ![安装界面](https://img-1252897487.cos.ap-guangzhou.myqcloud.com/2024/12/30/1735523707.png) 点击`Extract`解压到目录,然后点击 `Continue`进入下一步: ![安装界面](https://img-1252897487.cos.ap-guangzhou.myqcloud.com/2024/12/30/1735523791.png) 根据自己需求选择自定义安装或者简单安装,自定义安装可以选择安装目录 安装完成后打开visual studio2022,随便打开一个项目,打开项目属性,找到如下设置,按照图上配置就行,如果有其他特殊开发需求,可能需要自己去研究一下: ![VS项目属性](https://img-1252897487.cos.ap-guangzhou.myqcloud.com/2024/12/30/1735524079.png) 配置后保存好,在编译的时候,报错宏定义`emit`冲突,点开详情查看,发现TBB库中`emit`宏定义与QT中`emit`定义冲突了,解决办法也很简单,在`#include `TBB库的头文件中插入这样一句代码即可: ``` #define emit Q_EMIT //QT emit与TBB库宏定义冲突 ``` 接下来就可以愉快的继续开发了。 最后修改:2024 年 12 月 30 日 © 允许规范转载 赞 0 如果觉得我的文章对你有用,请随意赞赏
此处评论已关闭