您的位置:首页 > 其它

第一章 概述

2013-06-09 19:07 204 查看
第一章 概述

1、术语

1)线程

线程是指机器中连续的、顺序的属性集合

一个线程包含执行一系列机器指令所必须的机器状态,包括当前指令位置、地址和数据寄存器等

多个线程共享一个地址空间,而做不同的事情

2)异步

事情相互独立地发生

3)并发

指事情同时发生,实际上串行发生的事情好像同时发生一样

可能任意交错,导致程序相互独立地运行



4)单处理器和多处理器

单处理器:一台计算机只有一个编程人员可见的处理器

多处理器:一台计算机拥有多个处理器,它们共享同一个指令集和相同的物理内存

5)并行

指并发序列同时执行,指事情在相同的方向上独立进行,没有交错

并发是并行的假象,假装同时执行多个操作

6)线程安全和可重入

线程安全:指代码能够被多个线程调用而不会产生结果——互斥量、条件变量和线程私有数据

将线程安全函数分为多个小的临界区,对临界区数据的保护而不是对代码的保护,保证并行地执行

可重入:通过采用比将函数或库转换成一系列区域更为复杂的方式是代码成为线程安全的

7)并发控制功能

①建立、删除执行环境和独立维护它们状态

②调度决定在某个时候执行哪个环境,在不同环境中切换

③同步提供了协调访问共享资源的机制

互斥量阻止线程间发生不可预期的冲突,条件变量让线程等待直到可以安全地执行

2、异步编程

1)同步机制

ls|more,将ls命令的输出重定向到more命令的输入

线程:进程里足够执行代码的部分。包括:当前指令位置指针(计数器或PC)、栈顶指针、通用寄存器、浮点或地址寄存器

进程:还包括地址空间和文件描述符

2)线程比进程简单

线程间切换要比进程快,原因是线程间共享地址空间(包括代码段、数据段和堆栈)

进程切换,与进程相关的所有硬件状态都会失效

3、异步编程举例

1)多进程

使用fork调用生成一个子进程

使用wait函数来释放其创建的子进程资源

2)多线程
共享同一个地址空间



4、线程的好处

多线程编程模型的优点:

1)并行

在多处理器系统中,线程模型可以让一个进程同时执行多个独立运算

2)并发

允许程序在等待像I/O之类的阻塞操作时继续其他计算,这对于网络服务器和客户端是有用的

当一个线程等待费时的网络读或写操作时,该进程被阻塞,而程序中的其他线程可以独立地运行

3)编程模型

5、线程的代价

1)计算负荷

线程间同步导致

2)编程规则

同步协议和程序中的不变量,不得不避免死锁、竞争和优先级倒置

2)更难以调试

系统提供调试器,设置只能在特定线程内激活的断点

6、选择线程还是不用线程

最适合使用线程的是实现以下功能的应用:

1)计算密集型应用

分解到多个线程

2)I/O密集型应用

为了提高性能,将I/O操作重叠,分布式服务器,响应多个客户的请求

7、POSIX线程

1)结构概念

线程系统基本要素:执行环境、调度和同步

使用Pthreads,通过pthread_create创建一个线程,指定的线程启动函数开始

同步模型:使用互斥量来保护共享数据、使用条件变量等待共享数据到达某个期望的状态
2)类型和接口



3)错误检查

Pthread函数有错时不会设置errno变量,通过返回值来表示错误状态

成功:返回0,并包含一个额外的输出参数来指向存有"有用结果"的地址

错误:函数返回一个包含在errno.h头文件中的错误代码

注:同样提供了一个线程内的errno变量以支持其他使用errno的代码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  多线程