关于线程
来源:互联网 发布:qt程序员常用单词 编辑:程序博客网 时间:2024/05/14 23:50
一:什么是线程?
线程:线程最直接的理解就是“轻量级进程”,它是一个基本的CPU执行单元,也是程序执行流的最小单元,由线程ID、程序计数器、寄存器集合和堆栈组成。线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其他线程共享进程所拥有的全部资源。一个线程可以创建和撤销另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。
在Linux中,并没有真正的线程。linux中的线程是用进程模拟的,所以说其本质是进程。
二:进程和线程的区别
1 进程是资源分配的基本单位,线程是调度的基本单位。
进程的个体间是完全独立的,而线程间是彼此依存的。多进程环境中,任何一个进程的终止,不会响到其他进程。而多 线程环境中,父线程终止,全部子线程被迫终止(没有了资源)。而任何一个子线程终止一般不会影响其他线程,除非子 线程执行了exit()系统调用。任何一个子线程执行exit(),全部线程同时灭亡。
2 调用函数不一样
进程的创建: fork()
线程的调用函数:pthread_create()
3 资源管理
进程:进程本身是资源分配的基本单位,因而它的资源都是独立的,如果有多进程间的共享资源,就要用到进程间的通 信方式了,比如共享内存。共享数据就放在共享内存去,大家都可以访问,为保证数据写入的安全,加上信号量一同使 用。
线程:线程间要使用共享资源不需要用共享内存,直接使用全局变量即可。
4 通信方式
进程:A.共享内存 B.消息队列 C.信号量 D.有名管道 E.无名管道 F.信号
G.文件 H.socket
线程:线程间的通信方式上述进程间的方式都可沿用,且还有自己独特的几种:
A.互斥量 B.自旋锁 C.条件变量 D.读写锁 E.线程信号
G.全局变量
值得注意的是,线程间通信用的信号不能采用进程间的信号,因为信号是基于进程为单位的,而线程是共属于同一进程空 间的。故而要采用线程信号。
综上,进程间通信手段有8种。线程间通信手段有13种。
线程的创建:
函数编写:
运行结果:
结果显示:
返回结果打印了子线程的tid 和返回值 ,而不是报告子线程消失,说明主线程等待了子线程。
线程终止的三种情况:
1 :正常结束
2: 调用pthread_exit() 结束
3: 被其他线程终止 pthread_cancel()
代码实现:
- 关于线程
- 关于线程
- 关于线程
- 关于线程
- 关于线程
- 关于线程
- 关于线程
- 关于线程
- 关于线程
- 关于 线程
- 关于线程
- 关于线程
- 关于线程
- 关于线程
- 关于线程
- 关于线程
- 关于线程
- 关于线程
- 宜信创始人唐宁:技术到处都是,关键看怎么用
- 那些年,我追过的绘图工具
- bzoj1668 [Usaco2006 Oct]Cow Pie Treasures 馅饼里的财富
- 关于UIView的autoresizingMask属性的研究
- KMP
- 关于线程
- C语言中的 linux 信号
- HDOJ 1068 Girls And Boys (最大独立集数)
- 消息中间件RabbitMQ 初探
- JPush极光推送Java服务器端实例
- [vim]怎样记忆 进入编辑模式的按键
- Python算法--计数初步
- HtmlUnit自动填写表单并提交
- phono 问题