第9章 线程编程(1)_线程概念和线程标识

1. 引言

1.1 线程的概念

(1)进程是资源管理的最小单位,线程是程序执行的最小单位

(2)每个进程有自己的数据段、代码段和堆栈段。线程通常叫做轻型的进程,它包含独立的栈和CPU寄存器状态,线程是进程的一条执行路径,每个线程共享其所附属进程的所有资源,包括打开的文件、内存页面、信号标识及动态分配的内存等。

(3)因为线程和进程比起来很小,所以相对来说,线程花费更少的CPU资源

(4)在操作系统设计上,从进程演化出线程最主要的目的就是更好的支持多处理器并且减少进程上下文切换的开销

1.2 线程和进程的关系

(1)线程是属于进程的,线程运行在进程空间内,同一进程共享同一用户内存空间

(2)当进程退出时,该进程所产生的线程都会被强制退出并清除。

(3)一个进程至少需要一个线程作为它的指令执行体,进程管理着资源(如CPU、内存、文件等)。而将线程分配到某个CPU上执行。

1.3 线程的分类

(1)线程按其调度者可分为用户级线程内核级线程两种。

  ①用户级线程:主要解决的是上下文切换的问题,其调度过程由用户决定。

  ②内核级线程:由内核调度机制实现。

(2)现在大多数操作系统都采用用户级线程和内核级线程并存的方法。

(3)用户级线程要绑定内核级线程运行,一个进程中的内核级线程会分配到固定的时间片,用户级线程分配的时间片以内核线程为准。

(3)默认情况下用户级线程和内核级线程是一对一,也可以多对一,这样实时性就会比较差。

(4)当CPU分配给线程的时间片用完但线程没有执行完毕,此时线程会从运行状态返回到就绪状态,将CPU让给其它线程使用。

1.4 Linux线程的实现

(1)以下线程均为用户级线程。在Linux中,一般采用pthread线程库实现线程的访问与控制,由POSIX提供,具有良好的可移植性

(2)Linux线程程序编译需要在gcc上链接库pthread,如gcc -o test.o test.c -lpthread

1.5 线程的标识

(1)每个进程内部的不同线程都有自己唯一标识(ID)

(2)线程标识只在它所属的进程环境中有效。

(3)线程标识是pthread_t数据类型

头文件

#include <pthread.h>

函数

int pthread_equal(pthread_t, pthread_t); //相等返回非0,否则返回0.

pthread_t pthread_self(void); //返回调用线程的线程ID。

 

原文链接: https://www.cnblogs.com/5iedu/p/6413173.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    第9章 线程编程(1)_线程概念和线程标识

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/393613

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月3日 下午3:16
下一篇 2023年4月3日 下午3:16

相关推荐