写点什么

跟着卷卷龙一起学 Camera-- 内存池浅析 05

作者:卷卷龙
  • 2022 年 9 月 27 日
    广东
  • 本文字数:510 字

    阅读完需:约 2 分钟

这里主要介绍一些常用的内存池类型。以及需要考虑的问题。

定长内存分配器

优点:简单。分配和释放的效率高,解决实际中特定场景下的问题有效。缺点:功能单一。只能解决定长的内存需求



线程安全

如果你的程序有大量线程申请释放内存,那么这种方案下锁的竞争将会非常激烈,线程这样的场景下使用该方案不会有很好的性能。内存池不应该局限在单线程场景,多线程的时候,直接给内存池一把锁保护就可以了。如果你的程序有大量线程申请释放内存,那么这种方案下锁的竞争将会非常激烈,线程这样的场景下使用该方案不会有很好的性能。



线程局部存储

我们可以创建一个全局变量,因此所有线程都可以使用该全局变量,但与此同时,我们将该全局变量声明为线程私有存储,那么这时虽然所有线程依然看似使用同一个全局变量,但该全局变量在每个线程中都有自己的副本,变量指向的值是线程私有的,相互之间不会干扰。如:__thread int a = 1; // 线程局部存储



既然多线程使用线程池存在竞争问题,那么干脆我们为每个线程维护一个内存池就好了,这样多线程间就不存在竞争问题了。线程局部存储,正是用于解决这一类问题。

虽然上述方法可以解决很多关于线程的问题,但是在实际应用的时候应该根据切身需求,设计适合自己的。


发布于: 刚刚阅读数: 3
用户头像

卷卷龙

关注

还未添加个人签名 2022.07.26 加入

还未添加个人简介

评论

发布
暂无评论
跟着卷卷龙一起学Camera--内存池浅析05_ISP_卷卷龙_InfoQ写作社区