Chinaunix首页 | 论坛 | 博客
  • 博客访问: 40180
  • 博文数量: 29
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 285
  • 用 户 组: 普通用户
  • 注册时间: 2014-12-08 13:03
个人简介

海纳百川有容乃大,壁立千仞无欲则刚。

文章分类
文章存档

2015年(17)

2014年(12)

我的朋友

分类: LINUX

2015-03-02 09:07:17

线程安全:如果一个函数在同一时刻可以被多个线程安全地调用,就称该函数是线程安全地。
信号可重入:如果一个函数对异步信号处理程序的重入是安全地,那么就称函数是异步信号安全地。
同时满足以上两个条件的函数是 异步-信号安全的。

我认为这两者之间的区别是:
线程安全,强调的是同步。就是指多个线程是否能同时调用一个函数
信号安全,强调的是异步。就是当一个函数执行时,被信号中断,执行信号处理函数,这时处理函数能否对同一个函数进行再次调用。

举个例子,malloc函数,就是线程安全,但不是信号安全的。
由于malloc内部使用了线程同步的技术(比如,互斥量)使得多个线程可以同时调用。
但是当执行malloc函数时如果被信号处理程序打断,而且信号处理函数中再次调用malloc函数,那么就会是一个BUG。
阅读(533) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~