1 可重入,线程安全,异步信号安全之间的区别?

可重入:可以重复进入,不会引起问题(这个概念最宽)

线程安全:被多个线程使用时,不会出问题,也就是可以被多个进程重入(新函数和被终端和被中断的函数不在同一线程)

异步信号安全:可以被信号函数重入(信号处理函数和被中断的函数在同一线程)

可重入必然线程安全,必然异步信号安全

线程安全与异步信号没有关系

举个例子,一个函数使用了全局变量,那么它是不可重入的,但是如果给它加上锁(),那么它就是线程安全的,但是不是异步信号安全的,因为此时会死锁

那么如何让它成为异步信号安全的呢?在函数开头阻塞所有信号,结尾解除阻塞,那么它就是异步信号安全的了,当然,它锁

 死锁的例子:

#include"../apue.h"pthread_mutex_t mut;
void sig_usr1(int n)
{printf("%s\n","usr1");pthread_mutex_lock(&mut);pthread_mutex_unlock(&mut);printf("%s\n","usr1 end");return ;
}int waga()
{
static int n1=0;pthread_mutex_lock(&mut);printf("%s\n","lock");if(n1==0)raise(SIGUSR1);n1++;sleep(1);pthread_mutex_unlock(&mut);printf("%s\n","unlock");
}
int main()
{pthread_mutexattr_t attrt;pthread_mutexattr_init(&attrt);pthread_mutexattr_setpshared(&attrt,PTHREAD_MUTEX_NORMAL);    pthread_mutex_init(&mut,&attrt);signal(SIGUSR1,sig_usr1);waga();
}

2,取消点有什么用?

线程并不会立即响应cancel请求,而是在取消点响应

3,多线程的fork怎么处理?

父线程获取锁——fork——父线程释放,子线程释放

多线程fork会引起很多问题,这里有一些讨论http://blog.codingnow.com/2011/01/fork_multi_thread.html

习题1,fork复制了标准io库缓冲区,所以会看到重复的输出

习题3,可以,而且要保证调用的函数同样是异步信号安全的

习题7,不懂,解释得不够详细阿

转载于:https://www.cnblogs.com/mightofcode/archive/2013/01/13/2857750.html

apue读书笔记-第十二章相关推荐

  1. Android群英传读书笔记——第十二章:Android 5.X新特性详解

    第十二章目录 12.1 Android5.X UI设计初步 12.1.1 材料的形态模拟 12.1.2 更加真实的动画 12.1.3 大色块的使用 12.2 Material Design主题 12. ...

  2. 《DAMA数据管理知识体系指南》读书笔记-第十二章(元数据管理)

    目录 一.前言 二.内容结构 三.主要内容 1.引言 2.活动 3.工具 4.方法 5.实施指南 6.元数据治理 四.思考与总结 一.前言 本文是<DAMA数据管理知识体系指南>第12章的 ...

  3. APUE读书笔记-第十五章-进程间通信

    管道 创建管道(pipe函数) #include <unistd.h> int pipe(int fd[2); fd[0]为读打开,fd[1]为写打开 局限性 (1)管道是半双工的,数据只 ...

  4. 《深入浅出DPDK》读书笔记(十二):DPDK虚拟化技术篇(半虚拟化Virtio)

    Table of Contents 半虚拟化Virtio 132.Virtio使用场景 133.Virtio规范和原理 11.2.1 设备的配置 1. 设备的初始化 2. 设备的发现 3. 传统模式v ...

  5. Android群英传笔记——第十二章:Android5.X 新特性详解,Material Design UI的新体验

    Android群英传笔记--第十二章:Android5.X 新特性详解,Material Design UI的新体验 第十一章为什么不写,因为我很早之前就已经写过了,有需要的可以去看 Android高 ...

  6. R语言实战笔记--第十二章 重抽样(置换检验)与自助法

    R语言实战笔记–第十二章 重抽样(置换检验)与自助法 标签(空格分隔): R语言 重抽样 自助法 置换检验 置换检验 双样本均值检验的时候,假设检验的方法就是,检查正态性.独立性.方差齐性,分别对应的 ...

  7. 强化学习(RLAI)读书笔记第十六章Applications and Case Studies(不含alphago)

    强化学习(RLAI)读书笔记第十六章Applications and Case Studies(不含alphago) 16.1 TD-Gammon 16.2 Samuel's Checkers Pla ...

  8. 强化学习(RLAI)读书笔记第十六章Applications and Case Studies(alphago)

    强化学习(RLAI)读书笔记第十六章Applications and Case Studies(alphago) 16.6 Mastering the Game of Go 16.6.1 AlphaG ...

  9. Linux(b站视频兄弟连)自学笔记第十二章——Linux服务管理

    Linux(b站视频兄弟连)自学笔记第十二章--Linux服务管理 服务分类 RPM包安装服务的管理 独立服务的管理 基于xinetd 的服务管理 源码包服务管理 服务分类 RPM包安装服务的管理 独 ...

最新文章

  1. C#复制图片_并重命名
  2. 获取radio和select的值,获取select的值
  3. 数据多重共线性_多重共线性对您的数据科学项目的影响比您所知道的要多
  4. 2-路插入排序c语言算法,浅谈2路插入排序算法及其简单实现
  5. 传送带(洛谷-P2571)
  6. vue调用数组_vue数组的运用
  7. 第二次打开不是最大_第二次约会男生该干嘛,才能让关系更进一步?
  8. 在组织中管理 Windows Hello 企业版
  9. IOS多线程之NSThread
  10. 遗传算法优化模糊控制规则
  11. idea 字体颜色设置 + 背景图片
  12. java web问卷调查设计方案_Java web 调查问卷
  13. 教你认识正斜杠(/)与反斜杠(\)
  14. livezilla安装指南
  15. wamp php 7.0,wamp如何尝鲜php7
  16. 【Android -- 职场】六个职场意识
  17. ServerPropertiesAutoConfiguration.class cannot be opened because it does not exist
  18. allegro画两层板板步骤
  19. 互动让综艺再进化,「黑科技」如何让这届年轻人身临其境做戏精?
  20. php单选框关联数据库字段_php select,radio和checkbox默认选择的实现方法

热门文章

  1. 2022-2028年中国粘胶纤维市场投资分析及前景预测报告
  2. VS Code 离线安装插件方法
  3. Springboot 利用AOP编程实现切面日志
  4. 亲手建造自己想要的生活
  5. 路由器:访问控制列表
  6. 熵,交叉熵,散度理解较为清晰
  7. BiLSTM-CRF学习笔记(原理和理解) 维特比
  8. 聊一聊Spring中的线程安全性
  9. TVM示例展示 README.md,Makefile,CMakeLists.txt
  10. 人脸识别数据集精粹(下)