LinuxGod.net
Linux大神网——精选每一篇高品质的技术干货
  1. 首页
  2. 开源快讯
  3. 正文

【干货】Linux下的线程是什么?(二)

2023年1月17日 45点热度

之前我们已经介绍过进程的基本概念linux 判断线程是否在运行,那么线程是什么? 线程是进程内部的一个执行分支,举个栗子:比如一个项目的完成是多个团队之间的合作,和每个团队都是这个项目运行的一个分支。即线程是进程内部的执行分支。

进程的特点: (1)系统中程序执行和资源分配的基本单位 (2)每个进程都有自己的数据段、代码段、堆栈区 (3)在进行切换时需要比较复杂的上下文切换

线程特点: (1)减少处理机的空转时间,支持多处理器以及减少上下文切换开销,比创建进程小很多 (2)进程内独立的一条运行路线 (3)线程是CPU调度的基本单位(有多个执行流时才需要调度)linux命令详解词典,也成为轻量级进程

linux中没有真正意义上的线程,所以我们用进程模拟线程,如下图:

各线程之间共享以下资源和环境: (1)文件描述符表 (2)每种信号的处理方式(SIG_IGN, SIG_DFI或者用户自定义的信号处理函数) (3)当前工作目录 (4)用户id和组id 任何线程对系统资源的操作都会给其他线程带来影响

各线程私有以下资源: (1)线程id (2)上下文,包括各种寄存器的值,程序计数器和栈指针 (3)栈空间 (4)error变量 (5)信号屏蔽字 (6)调度优先级

win32判断线程是否在运行_判断线程是否在运行 linux_linux 判断线程是否在运行

Linux下的线程库函数是由POSIX标准定义的,称为POSIX thread或pthread。linux中线程函数位于libpthread共享库中,因此在编译时要加上Ipthread。

线程标识: 线程id 进程id在整个系统中是唯一的,线程id只在它所属的进程环境中有效 函数:pthread_self() 返回值:调用线程的id

win32判断线程是否在运行_判断线程是否在运行 linux_linux 判断线程是否在运行

pthread_t类型通常用结构体表示,不能把它作为整数处理(linux使用无符号长整数表示),为了移植,使用函数来比较线程:pthread_equal() 若两个线程id相等则返回非0值。否则返回0.

创建进程:pthred_create 参数的含义:thread-线程标识符、attr-线程属性设置,通常取NULL、start_routin-线程函数的起始地址linux 判断线程是否在运行,是一个以指向void的指针作为参数和返回值的指针,arg-传递给start_routine的参数。成功返回0,失败返回错误码。

win32判断线程是否在运行_linux 判断线程是否在运行_判断线程是否在运行 linux

运行结果如下:

退出线程:pthread_exit() reval-线程结束时的返回值,可由其他函数如pthread_join()来获取。 exit是退出进程,不能用来退出线程。

在任何一个时间点上,线程是可结合的或者分离的。一个可结合的线程能够被其他线程收回其资源和杀死。在其他资源回收之前,它的存储器资源(例如栈)是不释放的。相反,一个分离的线程是不能被其他线程回收或杀死的,它的存储器资源在它终止时由系统自动释放。

等待线程:pthread_join() th-等待线程的标识符 thread_return-用户定义的指针,用来存储被等待线程结束时的返回值(不为NULL时)。成功放回,出错返回错误码。 由于一个进程中的多个线程是共享数据段的,通常在线程退出之后,退出线程所占用的资源并不胡随着线程的终止而得到释放,等待方式为阻塞时等待。

取消线程:pthread_cancel() th-要取消的线程的标识符。成功返回,出错返回错误码。 作用:取消同一进程中的其他线程,被取消的线程可以设置自己的取消状态,被取消的线程接收到另一个线程的取消请求后,是接受还是忽略这个请求linux软件,如果接受,是立刻进行终止操作还是等待某个函数的调用等。

进程分离:pthread_detach() 将子线程设置为分离的,则线程结束后会自动释放所有资源。

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 线程 线程阻塞
最后更新:2023年1月17日

Linux大神网

每日更新,欢迎收藏♥ 不积跬步无以至千里,加油,共勉。

点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

Linux大神网

每日更新,欢迎收藏♥
不积跬步无以至千里,加油,共勉。

最新 热点 随机
最新 热点 随机
英伟达将LinuxGPU内核模块作为开放源码/MIT双重许可证(图) virtualboxlinux官方版免费、小巧,同时支持Windows、Linux和Mac系统主机 Linux平台下的嵌入式软件要具备说明技能吗? 图解linuxlinux内核结构框图对内核框图有个总体的把握 linux虚拟机的安装步骤是什么?虚拟机和服务器的区别 精通Linux程序设计的高级程序员并非一件可望不可及的事情 linux虚拟机软件 Linux在安装的时候要注意什么?Linux安装注意事项 Python都有哪些应用,学习完成Python后能的工作方向 微软考虑用Rust开发内核的Linux内核-Hartman Linux内核和文件系统权限管理的基本用法——ACL权限 Linux内核启动有次引导程序Grub 小白在阿里云云服务器上如何发布自己的网站(建站|详细) 阿里云>社区>主题地图S>查看存储推荐 Linux的内核放在了哪里?/boot的启动目录一览 Linux中修改文件权限的命令、创建者所在组、所有人 linux到底难不难学呢?推荐可以查看Linux命令大全 Linux下修改文件权限的权限与所有权的实现就显得很有必要 国内性价比很高的Linux虚拟主机系统安装的流程是什么? 1.Linux磁盘分区和目录Linux发行版本之间的差别很少? 基于命令修改文件的权限命令-ld
Linux5.12的推送请求不断涌入新开放的合并窗口预计4月底看到它的稳定版本go语言被称作互联网时代的c语言,用来开发嵌入式linux的理由腾讯云服务器上也搭建一套环境,安装成功自动启动个人笔记本安装Ubuntu20.04LTS下载地址启动第一步--加载BIOS当你打开计算机电源(组图)虚拟机安装Ubuntu操作系统-Ubuntu空间20G镜像下载指令中各个make-C~/linuxM=`pwd编译Linux启动过程中的几个部分内核的引导(图)如何在Linux上安装虚拟机的结果大多都是怎么安装的一个免费软件时间跟进的小白鼠是什么鬼?专题计算机是如何启动的?、内核操作系统的启动流程学习Linux最简单、最实用的环境就是虚拟机环境(上)linux系统位数最简单的命令--linux基于命令修改文件的权限命令-lddf显示指定磁盘文件和目录的磁盘使用空间命令参数《构建高性能web站点》推荐理由及方法都能找到1.Linux磁盘分区和目录Linux发行版本之间的差别很少?centos系统版本详细信息解决方案与操作系统版本兼容的重要性分析国内性价比很高的Linux虚拟主机系统安装的流程是什么?Linux下修改文件权限的权限与所有权的实现就显得很有必要
更为丰富多彩快手直播伴侣app是一款爱看什么视频就能将视頻 VS2015安装VC_Linux.exe安装VS2015软件和Linux系统 【Linux基础知识】特定的字符串反向查找文件(图) 1.安装JDK安装目录要求安装和配置是否成功 【Linux基础知识】Linux下的共享库和动态库 Contents[show]如何在Linux中创建目录和子文件夹? 版本号的信息有以下几个:内核版本号编译器发行系统版本号 img创建一个cronjob要创建,你可以使用crontab命令 Linux定时任务安全权限提升) 中科红旗(北京)信息科技有限公司研发的Linux桌面操作系统社区预览版 0渗透操作0x02绕过disable_functions插件(组图) PS教程:如何用gif文件来形容文件的意思? 如何在CentOS上执行流行的MySQL数据库服务器的基本安装 虚拟主机技术极大怎么样?如何选择多个网站.Q. Linux版本(1)RedHatLinux内核0.02版正式诞生 Linux计算机的防火墙必需运行OpenSSH服务器软件 宝塔安装使用SSH连接工具,Linux服务器连接的基本介绍 自定义登录session时要注意的几个小细节,你知道吗? linux基础命令注意:Linux命令区分大小写,小心输入内容 1.使用标准Ubuntu仓库进行自动安装2.使用官方的NVIDIA驱动
标签聚合
电脑 shell linux服务器 文件目录 虚拟机 软件 命令模式 unix linux系统 sudo
书籍
课程
技术群
技术干货大合集↓
  • 2023年2月 / 1篇
  • 2023年1月 / 161篇
  • 2022年12月 / 187篇
  • 2022年11月 / 76篇

COPYRIGHT © 2023 linuxgod.net ALL RIGHTS RESERVED.