malloc 的线程安全与不可重入性

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/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • EasyExcel完成excel文件的导入导出

    简介 常见的Excel分析框架有Apache poi 和EasyExcel, poi在另一篇已经介绍过了,详情可以看[https://www.cnblogs.com/jasmine…

    Java 2023年6月16日
    0121
  • RabbitMQ基础知识

    RabbitMQ基础知识 一、RabbitMQ概述 RabbitMQ是一款使用Erlang语言开发的,实现AMQP(高级消息队列协议)的开源消息中间件,它具有以下特性 开源、性能优…

    Java 2023年6月8日
    081
  • ElasticSearch(二)检索的进阶

    ElasticSearch(二)检索的进阶 检索的进阶 SearchAPI ES支持两种基本方式的检索: https://www.elastic.co/guide/en/elast…

    Java 2023年6月5日
    094
  • dubbo面试题目

    1.为什么要用 Dubbo? 随着服务化的进一步发展,服务越来越多,服务之间的调用和依赖关系也越来越复杂,诞生了面向服务的架构体系(SOA),也因此衍生出了一系列相应的技术,如对服…

    Java 2023年5月29日
    082
  • AUSTOj2

    include for(int i=0;i Original: https://www.cnblogs.com/liujy2233/p/16746441.htmlAuthor: 平…

    Java 2023年6月15日
    059
  • Sentinel

    方法级别降级 * 类级别降级 慢调用比例 异常比例 * 异常数 QPS-直接-快速失败 来源应用 QPS-直接-Warm Up QPS-直接-排队等待 QPS-关联-快速失败 QP…

    Java 2023年6月8日
    066
  • Java-仿华为商城项目-SpringBoot+MyBatis+MySQL

    用户注册 1.用户的注册功能。相当于在做数据的插入操作 insert into t_user (username,password) values (值列表) 2.在用户注册时要首…

    Java 2023年6月9日
    074
  • 记一次base64转MultipartFile的坑

    记一次base64转MultipartFile的坑 现在有个需求是接收base64编码的图片,然后上传到文件服务器上,由于文件服务的代码是固定的代码不能修改,所以只能适配接口。文件…

    Java 2023年6月9日
    095
  • springboot应用中使用CommandLineRunner

    在springboot应用中,存在这样的使用场景,在springboot ioc容器创建好之后根据业务需求先执行一些操作,springboot提供了两个接口可以实现该功能: Com…

    Java 2023年6月6日
    071
  • 常用通用简单文件上传功能

    1 /// 2 /// Web文件上传简单处理 3 /// 4 pu…

    Java 2023年6月5日
    047
  • 12.安装证书

    import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import ja…

    Java 2023年6月13日
    054
  • Swagger UI 与SpringMVC的整合

    关于 Swagger Swagger能成为最受欢迎的REST APIs文档生成工具之一,有以下几个原因: Swagger 可以生成一个具有互动性的API控制台,开发者可以用来快速学…

    Java 2023年5月30日
    079
  • windows 中如何定位恶意软件的藏身位置

    一: 下载spy++ 打开后 点击 搜索下面的查找窗口(Alt+F3) 点击 查找程序工具 右侧的 靶子一样的图标,鼠标左键按住不放,拖放到 弹窗上面,弹窗周围会出现 黑框。 然后…

    Java 2023年6月16日
    078
  • 【开源打印组件】vue-plugin-hiprint初体验

    vue-plugin-hiprint的学习与应用 😄 生命不息,写作不止🔥 继续踏上学习之路,学之分享笔记👊 总有一天我也能像各位大佬一样🏆 一个有梦有戏的人 @怒放吧德德🌝分享学…

    Java 2023年6月16日
    082
  • 理解Java FutureTask

    FutureTask实现的功能 它的功能就像他继承的接口一样:Runnable与Future。他实现了一套机制将两者连接起来。Runnable主要方法是run(),用于执行一些程序…

    Java 2023年5月29日
    077
  • InnoDB学习(二)之ChangeBuffer

    ChangeBuffer是InnoDB缓存区的一种特殊的数据结构,当用户执行SQL对非唯一索引进行更改时,如果索引对应的数据页不在缓存中时,InnoDB不会直接加载磁盘数据到缓存数…

    Java 2023年6月8日
    072
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球