apue读书笔记-第十二章
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读书笔记-第十二章相关推荐
- Android群英传读书笔记——第十二章:Android 5.X新特性详解
第十二章目录 12.1 Android5.X UI设计初步 12.1.1 材料的形态模拟 12.1.2 更加真实的动画 12.1.3 大色块的使用 12.2 Material Design主题 12. ...
- 《DAMA数据管理知识体系指南》读书笔记-第十二章(元数据管理)
目录 一.前言 二.内容结构 三.主要内容 1.引言 2.活动 3.工具 4.方法 5.实施指南 6.元数据治理 四.思考与总结 一.前言 本文是<DAMA数据管理知识体系指南>第12章的 ...
- APUE读书笔记-第十五章-进程间通信
管道 创建管道(pipe函数) #include <unistd.h> int pipe(int fd[2); fd[0]为读打开,fd[1]为写打开 局限性 (1)管道是半双工的,数据只 ...
- 《深入浅出DPDK》读书笔记(十二):DPDK虚拟化技术篇(半虚拟化Virtio)
Table of Contents 半虚拟化Virtio 132.Virtio使用场景 133.Virtio规范和原理 11.2.1 设备的配置 1. 设备的初始化 2. 设备的发现 3. 传统模式v ...
- Android群英传笔记——第十二章:Android5.X 新特性详解,Material Design UI的新体验
Android群英传笔记--第十二章:Android5.X 新特性详解,Material Design UI的新体验 第十一章为什么不写,因为我很早之前就已经写过了,有需要的可以去看 Android高 ...
- R语言实战笔记--第十二章 重抽样(置换检验)与自助法
R语言实战笔记–第十二章 重抽样(置换检验)与自助法 标签(空格分隔): R语言 重抽样 自助法 置换检验 置换检验 双样本均值检验的时候,假设检验的方法就是,检查正态性.独立性.方差齐性,分别对应的 ...
- 强化学习(RLAI)读书笔记第十六章Applications and Case Studies(不含alphago)
强化学习(RLAI)读书笔记第十六章Applications and Case Studies(不含alphago) 16.1 TD-Gammon 16.2 Samuel's Checkers Pla ...
- 强化学习(RLAI)读书笔记第十六章Applications and Case Studies(alphago)
强化学习(RLAI)读书笔记第十六章Applications and Case Studies(alphago) 16.6 Mastering the Game of Go 16.6.1 AlphaG ...
- Linux(b站视频兄弟连)自学笔记第十二章——Linux服务管理
Linux(b站视频兄弟连)自学笔记第十二章--Linux服务管理 服务分类 RPM包安装服务的管理 独立服务的管理 基于xinetd 的服务管理 源码包服务管理 服务分类 RPM包安装服务的管理 独 ...
最新文章
- C#复制图片_并重命名
- 获取radio和select的值,获取select的值
- 数据多重共线性_多重共线性对您的数据科学项目的影响比您所知道的要多
- 2-路插入排序c语言算法,浅谈2路插入排序算法及其简单实现
- 传送带(洛谷-P2571)
- vue调用数组_vue数组的运用
- 第二次打开不是最大_第二次约会男生该干嘛,才能让关系更进一步?
- 在组织中管理 Windows Hello 企业版
- IOS多线程之NSThread
- 遗传算法优化模糊控制规则
- idea 字体颜色设置 + 背景图片
- java web问卷调查设计方案_Java web 调查问卷
- 教你认识正斜杠(/)与反斜杠(\)
- livezilla安装指南
- wamp php 7.0,wamp如何尝鲜php7
- 【Android -- 职场】六个职场意识
- ServerPropertiesAutoConfiguration.class cannot be opened because it does not exist
- allegro画两层板板步骤
- 互动让综艺再进化,「黑科技」如何让这届年轻人身临其境做戏精?
- php单选框关联数据库字段_php select,radio和checkbox默认选择的实现方法