多线程编程预习

1.何谓线程

线程是进程的一个实体,死cpu调度很分派的基本单位,它是比进程更小的能独立运行的基本单位,线程自己基本上不拥有系统资源,只拥有一点运行中必不可少的资源,但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。

2.一个线程包含的内容

1.一个指向当前被执行命令的指令指针。

2.一个栈

3.一个寄存器值的集合,定义了一部分描述正在执行线程的处理器状态的值。

4.一个私有的数据区。

3.为什么要引入线程的概念

1.在许多应用中会同时发生多种活动,某些活动会随着时间的推移被阻塞,通过将这些应用程序分解成可以准并行运行的多个顺序线程,程序设计模型会变得简单起来。

2.由于线程比进程更轻量级,所以他们更容易(更快)创建和撤销,在一般情况下,创建一个线程比创建一个 进程要快上10100倍,在有大量线程需要动态和快速修改时,具有这一特性是非常重要的。

3.在性能方面,若多个线程都是cpu密集型,那么多线程并不能很明显地体现出它的性能提升,但是在一些需要大量IO处理和大量计算的情况下,拥有多线程允许这些活动被彼此重叠进行,对程序性能的提升是非常明显的。

4.在多cpu系统中,多线程是有益的,在这样的系统中,可以真正实现物理上的多线程并行运行。

4.多线程的优点

1.多线程使得程序的响应速度更快,因为用户界面可以在进行其他工作的同时一直处于活动状态。

2.当前没有进行处理的任务时可以将处理器的时间让给其他任务。

3.占用大量处理时间的任务可以定期将处理器时间让给其他他任务

4.可以随时停止任务

5.可以分别设置各个任务的优先级一优化性能

5.什么情况下最适合用多线程处理

1.耗时或大量占用处理器任务阻塞用户界面操作

2.各个任务必须等待外部资源(如远程文件或Internet连接)

6.多线程开发的最基本概念

1.线程,又分创建,退出,等待

2.互斥锁,包括创建,销毁,加锁和解锁

3.条件操作,包括创建,销毁,触发,广播和等待。

7.线程退出的方式有哪些

1.线程从执行函数返回,返回值是线程的退出码

2.线程被统一进程的其他线程取消

3.调用pthread_exit()函数退出。

8.如何理解互斥锁

本质上讲,互斥量是一把锁,该锁保护一个或者一些资源(内存或者文件句柄等数据),一个线程如果需要访问该资源,必须要获得互斥量并对其加锁,这是如果其他线程想访问该资源也必须要获得该互斥量,但是锁已经加锁,所以这些进程只能阻塞,直到获得该锁的线程解锁,这是阻塞的进程里面有一个线程获得该互斥量并加锁,获准访问该资源,其他的线程继续阻塞,周而复始。

9.互斥锁的分类

1.快速性:默认的类型。

2.递归型:若遇到死锁,同一线程循环给互斥量上锁,系统将会知道该上锁行为来自同一线程,那么就会同意线程给该互斥量上锁。

错误检测型:如果该互斥量已经被上锁,那么后续的上锁将会失败而不会阻塞,pthread_mutex_lock()操作将会返回EDEADL

猜你喜欢

转载自blog.csdn.net/cb673335723/article/details/78676890
今日推荐