加入收藏 | 设为首页 | 会员中心 | 我要投稿 盐城站长网 (https://www.0515zz.cn/)- 运维、云管理、管理运维、智能数字人、AI硬件!
当前位置: 首页 > 站长资讯 > 传媒 > 正文

产品经理的「临界点」

发布时间:2021-01-27 10:59:45 所属栏目:传媒 来源:互联网
导读:3.额外性能开销。比如你只想开发user,但还得把其它的加载进来,完全没有必要嘛。 说明:idea不能像eclipse一样close project的,毕竟人家那是workspace的概念,而idea同一视窗属于同一项目,总不能说关闭某个模块吧,模块一般相关性很强,完全没必要单独开/

3.额外性能开销。比如你只想开发user,但还得把其它的加载进来,完全没有必要嘛。

说明:idea不能像eclipse一样close project的,毕竟人家那是workspace的概念,而idea同一视窗属于同一项目,总不能说关闭某个模块吧,模块一般相关性很强,完全没必要单独开/关

想一想,若你一个人负责了20+个项目,每次打开是不是得花上个几分钟呢?

4.概念上混乱。这么放在一起,其实就不是user项目、order项目了,而是user模块、order模块,很明显概念上就不准确了
 

注意,虽然这里给出了线程局部存储的设计,但并不是说加锁的方案就比不上线程局部存储方案,还是那句话,一切要看使用场景,如果加锁的方案够用,那么我们就没有必要绞尽脑汁的去用其它方案,因为加锁的方案更简单,代码也更容易维护。还需要提醒的是,这里只是给出了内存池的一种实现方法,并不是说所有内存池都要这么设计,内存池可以简单也可复杂,一切要看实际场景,这一点也需要注意。

其它内存池形式

到目前为止我们给出了两种内存池的设计方法,第一种是提前创建出一堆需要的对象(数据结构),自己维护好哪些对象(数据结构)可用哪些已被分配;第二种可以申请任意大小的内存空间,使用过程中只申请不释放,最后一次性释放。这两种内存池天然适用于服务器端编程。最后我们再来介绍一种内存池实现技术,这种内存池会提前申请出一大段内存,然后将这一大段内存切分为大小相同的小内存块:
 

关于线程局部存储,可以参考这里。假设这个全局变量是一个整数,变量名字为global_value,初始值为100,那么当线程A将global_value修改为200时,线程B看到的global_value的值依然为100,只有线程A看到的global_value为100,这就是线程局部存储的作用。

线程局部存储+内存池

有了线程局部存储问题就简单了,我们可以将内存池声明为线程局部存储,这样每个线程都只会操作属于自己的内存池,这样就再也不会有锁竞争问题了。

(编辑:盐城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读