Linux编程6.1 线程及并发控制-线程与进程

1、概述

线程与进程非常像:进程=线程*n(n>=1)+资源
线程:执行单元->运行 就绪 阻塞 线程状态
多线程,一个进程中,有多个线程在运行->虚拟内存不是镜像,而是共享

2、线程

2.1线程分类

1)、线程按照其调用者可分为用户级线程和内核级线程两种
a) 用户级线程:主要解决的是上下文切换的问题,其调试过程由用户决定。
b) 内核级线程:由内核调试机制实现
2)、 现在大多数操作系统都采用用户级线程和内核级线程并在的方法
3) 、用户级线程要绑定内核级线程运行,一个进程中的内核级线程分配到固定的时间片,用户级线程分配的时间片以内核级线程为准。
4) 、默认情况下用户级线程和内核级线程是一对一,也可以多对一,这样实时性就会比较差。
5) 、当CPU分配给线程的时间片用完后但线程没有执行完毕,此时线程会从运行状态返回到就绪状态,将cpu让给其它线程使用。

2.2 Linux线程实现
  • 以下线程均为用户级线程。在linux中,一般采用pthread线程库实现线程的访问与控制,由POSIX提出,具有良好的可移植性。
  • Linux线程程序编译需要在gcc上链接库pthread.
2.3 线程标识
  • 每个进程内部的不同线程都有自己的唯一标识(ID)
  • 线程标识只在它所属的进程环境中有效。
  • 线程标识是pthread_t数据类型
#include <pthread.h>

int pthread_equal(pthread_t t1, pthread_t t2);
功能:比较两个线程标识符
返回:如果两个线程ID相等,返回一个非零值;否则,返回0.

#include <pthread.h>

pthread_t pthread_self(void);
功能:获取调用线程的ID
返回:调用线程的ID

3、进程的概念:

进程是资源管理的最小单位,线程是程序执行的最小单位
每个进程有自己数据段、代码段和堆栈段。线程通常叫做轻型的进程,它包含独立的栈和CPU寄存器状态,线程是进程的一条执行路径,每个线程共享其所附属进程的所有资源,包括打开的文件、内存页面、信号标识及动态分配的内存等。
因为线程和进程比越来很小,所以相对来说,线程花费更少的CPU资源。
在操作系统设计上,从进程深化出线程,最主要的目的就是更好地支持多处理器,并且减小进程上下文切换的开销。

4、进程和线程有关系

线程和进程的关系是:
线程是属于进程的,线程运行在进程空间内,同一进程所生产的线程共享同一用户内存空间,当进程退出时该进程所产生的线程都会强制退出并清除。一个进行至少需要一个线程作为它指令执行体,进程管理着资源(比如CPU、内存、文件等等)。而将线程分配到某个cpu上执行。
在这里插入图片描述

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值