malloc的线程安全
线程安全就是多个线程并发执行相同代码,程序的结果依然是正确的。malloc 由于操作的是堆上的空间,所以如果要实现线程安全,就需要对 malloc 加锁。
malloc 的不可重入性
可重入函数简单来说就是可以被中断的函数,在这个函数执行的任何时刻中断它,转入 OS 调度下去执行另外一段代码,执行完返回原函数时不会有错误。可重入的要求比线程安全高, 可重入必定是线程安全的,但线程安全不一定可重入。
如果在 malloc 的过程中发生了信号中断,而在信号处理程序中也需要执行 malloc :
tcmalloc
tcmalloc (Thread-Caching Malloc)是 Google 开发的内存分配器,每个线程都有自己的缓存内存,所以在最佳的情况下,可以从 thread cache 中实现 无锁内存分配和 内存释放。
Original: https://www.cnblogs.com/zyb993963526/p/16426072.html
Author: Kayden_Cheung
Title: malloc 的线程安全与不可重入性
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/540105/
转载文章受原作者版权保护。转载请注明原作者出处!