《APUE》读书笔记第十一章-线程】的更多相关文章

本章主要介绍了线程,了解如何使用多线程在单进程环境中来执行多任务.由于多个线程共享其进程空间,所以必须采用同步的机制来保护数据的一致性. 一.线程的概念 典型的Unix系统都可以看成只有一个控制线程,一个进程在同一时刻只能做一件事.但有了多线程,我们可以设计成在同一时刻进程能做不止一件事,每个线程处理各自独立的任务.进程的所有信息对该进程的所有线程都是共享的,包括可执行的程序文本.程序的全局内存和堆内存.栈以及文件描述符. 二.线程标识 #include <pthread.h> int pth…
<Linux内核设计与实现>第五周读书笔记——第十一章 20135301张忻 估算学习时间:共2.5小时 读书:2.0 代码:0 作业:0 博客:0.5 实际学习时间:共3.0小时 读书:2.0 代码:0 作业:0 博客:1.0 耗时估计的公式:Y=X+X/N ,Y=X-X/N 第18章 调试295 调试工作艰难是内核级开发区别于用户级开发的一个显著特点,相比于用户级开发,内核调试的难度确实要艰苦得多.更可怕的是,它带来的风险比用户级别更高,内核的一个错误往往立刻就能让系统崩溃. 驾驭内核调试…
11 - 线程 Github 地址 1. 线程概念 典型的 UNIX进程 可以看成只有一个 控制线程 :一个进程在某一时刻只能做一件事情.有了 多个控制线程 ,就可以把进程设计成在某一时刻能够做不止一件事,每个线程处理各自独立的任务. 每个线程都包含有表示执行环境所必需的信息: 进程中表示线程的 线程 ID 一组寄存器值 栈 调度优先级和策略 信号屏蔽字 errno 变量 线程私有数据 一个进程所有信息对该进程的所有线程都是共享的: 可执行程序的代码 程序的全局内存和堆内存 栈 文件描述符 线程…
自2005年开始,python在金融行业中的应用越来越多,这主要得益于越来越成熟的函数库(NumPy和pandas)以及大量经验丰富的程序员.许多机构发现python不仅非常适合成为交互式的分析环境,也非常适合开发文件的系统,所需的时间也比Java或C++少得多.Python还是一种非常好的粘合层,可以非常轻松为C或C++编写的库构建Python接口. 金融分析领域的内容博大精深.在数据规整化方面所花费的精力常常会比解决核心建模和研究问题所花费的时间多得多. 在本章中,术语截面(cross-se…
本章标题是字符串和字符串函数.主要是了解和字符串有关的函数. 1.字符串表示和字符串I/O 主要内容:字符串常量和字符串数组的初始化,对比了指针和字符串. 其中要注意的是,数组初始化是从静态存储区把一个字符串复制给数组,而指针初始化只是复制字符串的地址.但是绝大多数的C字符串操作使用的都是指针. 2.字符串的函数 无论怎么样,先分配足够的空间.介绍了三种输入函数gets().fgets().scanf()和三种输出函数puts().fputs().printf(),以及strlen().strc…
第13章 守护进程 13.1 引言 *守护进程也称精灵进程(daemon)是生存期较长的一种进程.它们常常在系统自举时启动,仅在系统关闭时才终止.因为它们没有控制终端,所以说它们是在后台运行的.UNIX系统有很多守护进程,它们执行日常事务活动 13.2 守护进程的特征 *系统进程依赖于操作系统实现.父进程ID为0的各进程通常是内核进程,它们作为系统自举过程的一部分而启动.(init是此种进程的例外,它是内核在自举时启动的用户层命令.)内核进程是特殊的,通常存在于系统的整个生命期中.它们以超级用户…
1. 引言 了解如何使用多个控制线程在单进程环境中执行多个任务. 不管在什么情况下,只要单个资源需要在多个用户键共享,就必须处理一致性问题. 2. 线程概念 典型的Unix进程可以看成只有一个控制线程:一个进程在某一时刻只能做一件事情. 多线程带来的好处: 通过为每种事件类型分配单独的处理线程,可以简化处理异步事件的代码.每个线程在进行事件处理时可以采用同步编程模式. 多个进程必须使用操作系统提供的复制机制才能实现内存和文件描述符的共享.而多个线程自动地可以访问相同的存储空间和文件描述符. 有些…
要编写线程安全的代码,其核心在于要对状态访问操作进行管理,特别是对共享的和可变的状态的访问. 修复多线程问题的方式: 不在线程之间共享该状态变量 将状态变量修改为不可变的变量 在访问状态变量时使用同步 什么是线程安全性 当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替运行,并且在主调代码中不需要任何额外的同步或协同,这个类都表现出正确的行为,那么就称这个类是线程安全的. 无状态对象一定是线程安全的 原子性 竞态条件:"先检查后执行"."读取-修改-…
17.1 引言 *两种高级IPC:基于STREAMS的管道(STREAMS-based pipe)以及UNIX域套接字(UNIX domain socket)可以在进程间传送打开文件描述符.服务进程可以使它们的打开文件描述符与指定的名字相关联,客户进程可以使用这些名字与服务进程通信 17.2 基于STREAMS的管道 *可以用fattach函数给STREAMS管道一个文件系统中的名字 *一旦STREAMS管道连接到文件系统名字空间,那么原来该名字的底层文件就不再可访问的.打开改名字的任一进程将能…
18.1 引言 *终端I/O的用途很广泛,包括用于终端.计算机之间的直接连线.调制解调器以及打印机等等,所以终端I/O系统非常复杂 18.2 综述 *终端I/O有两种不同的工作模式: (1)规范模式输入处理(Canonical mode input processing) (2)非规范模式输入处理(Noncanonical mode input processing) 18.3 特殊输入字符 *CR \r 回车符.不能更改此字符.以规范模式进行输入时识别此字符.当设置了ICANON(规范模式)和…