malloc的线程安全与signal使用malloc的陷阱(内核态与用户态、系统调用与C库调用、可重入与不可重入) 您所在的位置:网站首页 stack线程安全吗 malloc的线程安全与signal使用malloc的陷阱(内核态与用户态、系统调用与C库调用、可重入与不可重入)

malloc的线程安全与signal使用malloc的陷阱(内核态与用户态、系统调用与C库调用、可重入与不可重入)

#malloc的线程安全与signal使用malloc的陷阱(内核态与用户态、系统调用与C库调用、可重入与不可重入)| 来源: 网络整理| 查看: 265

前言:为什么写这篇博客? 原因:为什么malloc本身是线程安全函数(man手册也说明了),但是signal中使用却会产生错误与陷阱,线程是调用malloc并执行,signal也是执行malloc,可是为什么是不安全的? 背景知识:这4个部分留给初学者自己查资料,内容太多,这里简单叙述下,这5块搞清楚就能理解了,而且对于linux学习这几部分是必不可少的,现在可能感觉用不上,等真正做项目你才会发现这些概念有多重要。 (1)内核态与用户态 (2)系统调用与C库调用 (3)可重入与不可重入 (4)内核对信号的处理方法 (5)系统调用函数内部的锁 (6)同步与异步 1、系统调用函数的线程安全与可重入性

(1)在man手册中,与系统调用有关的函数都会说明该函数是否线程安全,所以这也是我们写代码需要关注的,而线程安全与函数是否可重入有很大关系,函数可重入一定是线程安全的,线程安全不一定是可重入函数,比如maloc使用递归锁实现了线程安全,但它是不可重入函数,所以不可重入函数可以通过内核锁实现线程安全(锁是系统调用,所以工作在内核态,也叫内核锁),还有很多函数也是这样实现线程安全的。

2、内核处理信号内函数机制与线程处理函数机制的区别 2.1 信号 信号详细介绍该博客


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有