- 主题:new 或者malloc为什么是线程安全的
但是实际运行下来速度很快,内部有锁的机制吗,如果多线程调用new都会找heap上内存,内部肯定会加锁把
--
FROM 117.59.117.*
速度快是由于现代的内存分配器都喜欢按照页来向系统申请内存,对于多次申请小内存很快。高性能的分配器喜欢采用tls,按照线程纬度来管理堆因此将锁等待的概率降到很低。
【 在 freyoneby 的大作中提到: 】
: 但是实际运行下来速度很快,内部有锁的机制吗,如果多线程调用new都会找heap上内存,内部肯定会加锁把
: --
:
发自「今日水木 on iPhone XS」
--
FROM 223.72.80.*
【 在 freyoneby 的大作中提到: 】
: 但是实际运行下来速度很快,内部有锁的机制吗,如果多线程调用new都会找heap上内存,内部肯定会加锁把
内存分配有不同策略啊, 首先会有块表, 释放的空间, 会按大小,放哈希表里, 而不是合并回堆里,同样大小的分配请求,就直接返回了。
--
FROM 124.126.1.*