Linux 线程管理

Linux 线程:使用&管理线程、多线程、分离线程 阅读详情

Linux 线程管理

。 https://blog.youkuaiyun.com/swjtufq/article/details/53409638

相信大家用java语言写线程已经很熟悉了,今天我们就来看下,在Linux下开发的时候怎么进行线程的管理
1 pthread_create函数
创建一个线程
函数原型:int pthread_create((pthread_t thread, pthread_attr_t *attr, void (start_routine)(void ), void *arg)
第一个参数是线程标识符
第二个参数是线程的一些属性,我们一般设置为NULL即可
第三个参数是线程的执行方法
第四个参数是传入的值
返回值:成功,返回0;出错,返回-1。
来看一个例子:
这里写图片描述
我们用while(1)来防止进程死掉
执行结果:
这里写图片描述

2 pthread_join函数
如果不想用while(1),可以用pthread_join来等待线程结束
函数原型:
int pthread_join(pthread_t thread, void **retval);
第一个参数是线程标示符
第二个参数用来存储被等待线程的返回值
返回值 : 0代表成功。 失败,返回的则是错误号

这里写图片描述

执行结果:
这里写图片描述

3 pthread_exit
函数原型:
void pthread_exit(void* retval);
参数代表返回给进程的值
这里写图片描述

pthread_create的第三个参数是传入线程的值

执行函数thread_function的参数就是刚才传入线程的值

pthread_exit的参数是返回的值

pthread_join的第二个参数是最终获取到的返回的值

执行结果:
这里写图片描述

下面我们来看下创建多个线程:
这里写图片描述

执行结果:
这里写图片描述

我执行了多次,都发现是已经同步的了,不知道Linux内核做了什么优化

如果我们想主动加上同步,可以通过互斥锁的方式
初始化锁。在Linux下,线程的互斥量数据类型是pthread_mutex_t。在使用前,要对它进行初始化。
静态分配:pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER

加锁。对共享资源的访问,要对互斥量进行加锁,如果互斥量已经上了锁,调用线程会阻塞,直到互斥量被解锁。
int pthread_mutex_lock(pthread_mutex *mutex);
解锁。在完成了对共享资源的访问后,要对互斥量进行解锁。
int pthread_mutex_unlock(pthread_mutex_t *mutex);

这里写图片描述

执行结果:
这里写图片描述

好了,Linux 线程管理就总结到这里,如有问题,欢迎指正,谢谢。

LINUX中的线程管理相关函数 进程与线程: 进程:系统分配资源的基本单位,它没有代码执行能力。 线程:进程内部的一条执行路线,它是系统分配CPU时间片的基本单位。 每一个线程都应一个线程函数,线程创建成功后会调用线程函数,线程函数一旦返回,相应的线程就结束。 主函数可以认为是主线程的线程函数,主线程是由系统创建,也是最先被创建,只能有一个。而普通线程是由主线程直接或者间接创造,可以没有也可以有一个或者多个。 主线程一... 阅读详情

相关推荐

深入了解Linux进程与线程管理

本文详细探讨了GNU/Linux环境下进程和线程的管理,包括进程状态的控制、/proc文件系统的使用以及POSIX线程编程的基础知识。通过实例展示了如何发送信号控制进程状态、如何通过/proc文件系统获取进程信息,以及如何创建和管理线程。本文不仅介绍了基本概念,还提供了深入理解GNU/Linux多任务处理机制的窗口。

weixin_28487725的博客 961

Linux线程:管理与控制

线程是操作系统能够进行调度的最小单位,是进程内的一个执行单元。它负责在程序里独立执行一个控制流(线程流),拥有独立的执行栈和程序计数器(PC),用于保存线程上下文信息。线程本身不拥有系统级的独立资源(如独立的内存空间、文件描述符表等),而是与同属一个进程的其他线程共享进程所拥有的全部资源。线程拥有一些运行中必不可少的资源,如程序计数器、一组寄存器和栈,以支持其独立的执行路径。在Linux中,线程是通过在相同的地址空间内创建多个结构体来实现的,这些结构体表示了线程的状态和相关信息。

无敌岩雀的博客 2037

Unity URP项目里Post Processing死活没效果?别慌,这5个坑我帮你踩过了

本文详细解析了Unity URP项目中Post Processing效果失效的五大常见问题,包括渲染管线配置冲突、Volume作用域误判、摄像机参数漏配、Layer层级冲突和Profile引用异常。通过实际项目案例和代码示例,提供专业级解决方案,帮助开发者快速排查并修复后处理效果不生效的问题。

weixin_33721427的博客 333

Linux复习之线程管理

线程是进程里面单一的执行控制序列(执行流),也是cpu调度的基本单位(分配给cpu执行最小单位),假如进程的运行是为了完成某个任务,线程是该任务的许多子任务之一,线程的创建,操作系统并不会给它分配内存资源,进程中所有线程共享所属进程地址空间上的资源。如果进程里只有一个线程,也就是只有一个线程在cpu中执行该进程的代码和数据。如果有多个线程,那么这些线程轮流在cpu中执行该进程的代码和数据。在linux中,线程是在进程的基础改的。

qq2904529388的博客 581

PHP特性知识点总结

(1)类型转换之前提到过的是字符串转为整型。其实php手册里面提到了各种类型的转换。先把他放在这里。我们按照php手册上的顺序来介绍,只介绍几个比较常用的。①转化为bool②转化为整型int。

m0_73605862的博客 1295

Verilog单周期CPU设计(超详细)

实验 单周期CPU一、设计目的与目标实验内容实验要求二、课程设计器材硬件平台软件平台三、 CPU逻辑设计总体方案指令模块MIPS指令格式指令处理流程数据通路总体结构图设计流程逻辑图四、模块详细设计PCAdd4PCINSTMEMDATAMEMSHIFTER32_L2SHIFTER_COMBINATIONMUX4X32MUX2X5EXT16T32MUX2X32CONUNITREGFILEALUSing...

Ace Cheney的博客 9万+

网络通信-线程管理

2、早期各个厂商有自己私有的线程库,而且接口的实现差异较大,不利于移植,世界标准化组织与1995年,制定了统一的线程接口标准规范,遵循该标准的线程称为POSIX线程,简称pthread。1、线程是进程的执行路线,它是进程内部的控制序列,或者说线程是进程的一部分(进程是一个资源单位,线程是执行单位,线程是进程的一部分,负责真正的执行)8、进程中的所有线程同在一个虚拟地址空间中,进程中的所有资源对于线程而言都是共享的,因此当多个线程协同工作时需要解决资源竞争问题(加锁)线程栈末尾的警戒缓冲区大小。

weixin_56262931的博客 440

MiFlash Prime免授权刷机实战:解锁小米9008 EDL救砖新方案

MiFlash Prime作为免授权刷机工具,有效解决了小米设备在9008 EDL模式下因账号验证无法救砖的难题。本文详细介绍了从驱动安装、进入EDL模式到固件刷写的完整流程,帮助用户安全快速地恢复变砖设备,是维修人员和极客的实用解决方案。

5f4d3s2a1q的博客 2879

【Linux】多线程——线程概念|Linux下进程与线程|线程控制

【Linux】多线程——线程概念|Linux下进程与线程|线程控制

weixin_60478154的博客 2298

Abaqus滞回问题求解—浆锚连接装配式剪力墙滞回模拟

当下土木工程研究生,多数都在从事装配式混凝土构件安全或装配式混凝土构件连接节点力学性能的研究。研究这类问题,几乎脱离不开对有限元软件的使用,Abaqus求解能力非常强大,但模型处理能力相对较弱。装配式混凝土结构的有限元计算与传统现浇结构相比,其节点处理起来相对复杂,计算结果往往需要凸显出连接节点力学特性,所以对建模精程度的要求较高。所以向大家介绍一款工具—HyperMesh软件(一下简称Hm),它是专业的有限元前处理工具,用于处理装配式混凝土构件或连接节点有限元模型比较合适。这篇文章主要介绍如何利用Hm处理

qq_31918049的博客 2902

S32DS IDE调试技巧:如何用条件断点精准捕获汽车电子MCU的硬件状态变化

本文详细介绍了S32DS IDE中条件断点功能在汽车电子MCU开发中的应用技巧。通过精准捕获硬件状态变化,工程师可以高效调试外设寄存器异常、时序敏感型交互等复杂场景,大幅提升汽车电子系统的开发效率。文章还提供了多种实战案例和性能优化建议,帮助开发者充分利用S32DS的调试功能。

CAT789的专栏 208

头歌 Linux之线程管理

头歌 Linux之线程管理

安年的小小博客有大大的梦想 1669

基于STM32L4XX、HAL库的CH182H1以太网收发器(PHY)驱动程序设计

define PHY_REG_PHYSCR 0x12 // PHY特殊控制寄存器。#define PHY_REG_PHYSTS 0x10 // PHY状态寄存器。#define PHY_REG_PHYIDR 0x11 // PHY标识寄存器。#define PHY_REG_ID1 0x02 // PHY标识符1。#define PHY_REG_ID2 0x03 // PHY标识符2。

zhusl6688的博客 406

【Linux】线程ID、线程管理、与线程互斥

本文系统剖析Linux多线程编程的核心原理与实战技巧。从线程ID的虚拟地址本质出发,详解线程控制块(TCB)的创建与管理、动态库加载机制,以及线程栈的独立空间特性。通过封装线程类与RAII锁机制,演示如何高效实现多线程的启动、停止与同步。结合抢票系统案例,深入探讨共享资源竞争、互斥锁的应用及死锁避免策略,揭示线程安全与可重入性的关键区别。最后,通过动态库与内核LWP的协同机制,阐明多线程在Linux中的底层实现逻辑,为开发者提供从理论到实践的完整技术闭环。

2303_77756141的博客 1359

uniapp [全端兼容] - 最新详细实现拍摄视频录像并可播放预览视频,调起本机摄像头开启录像录制完毕后保存到本机临时存放,可对拍摄的视频进行压缩处理减少文件大小不损失画质,详解录制视频并读取播放!

uni-app,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,录视频,拍视频,拍摄录制视频后上传服务器,调起摄像头录视频并可预览,录视频上传,录像,uniapp录制视频并上传,录制视频并保存到本地设备,如何本地保存并播放预览,提供给用户观看MP4视频录像并上传到后端服务器完整功能源码,视频压缩,mp4文件,删除视频,录像后怎么预览,临时视频文件怎么减少压缩大小,视频压缩及上传,自己录视频并生成可播放的文件,录视频并能打开查看,视频压缩后上传,本机相册,录完怎么预

🏆 前端领域优质创作者 1万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

整理基于Linux系统的线程管理

Linux,线程管理,线程调度

weixin_43815862的博客 663

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Linux线程管理

线程是操作系统能内够进行运算、执行的最小单位,它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。总结:线程是进程的一部分,是进程内负责执行的单位,进程是由资源单位(内存资源、信号处理方案、文件表)+执行单位组成,默认情况下进程内只有一个线程,但可以有多个。POSIX线程(POSIX Threads,常被缩写为pthread)是POSIX的线程标准,定义了创建和操纵线程的一套API。

kyrie_jie的博客 1192

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Linux线程——线程创建与管理常用API总结

在 Linux 下进行线程开发,主要使用 POSIX 提供的pthread库。pthreadAPI 涵盖了线程的整个生命周期管理以及线程间同步与通信等功能。和。其中,线程管理类函数包括(创建线程)、(等待线程结束)、(线程退出)、(分离线程)等,主要负责线程的创建、运行与回收;同步机制类函数如(互斥锁)、(条件变量)等用于协调多个线程对共享资源的安全访问;而线程控制类函数如(线程取消)、(获取线程 ID)、(设置可取消状态)等,则提供了对线程行为的细粒度控制。

weixin_45720999的博客 851

linux下的进程线程管理

在 Linux 操作系统中,线程(Thread)是进程(Process)的一个执行单元。线程共享进程的资源,如内存和文件描述符,同时可以独立执行。以下是关于 Linux 线程的详细介绍,包括线程的基本概念、创建、管理、调度以及与进程的关系。进程之间事件异步通知的一种方式。它是一种软件中断,用于向进程发送通知和指令,以便对其进行控制或传递信息。进程信号由整数值来标识,每个值对应一个特定的信号。不同的信号对应不同的状况。

2301_80829238的博客 1060

UNIX-Linux线程管理

UNIX-Linux线程管理线程基本概念线程基本特点POSIX线程线程函数创建线程等待线程结束获取线程ID比较两个线程ID线程终止线程分离线程取消设置线程属性 线程基本概念 1、线程就是进程中的执行路线,即进程内部的控制序列,或者说进程的子任务(进程就是正在运行的程序,它是一个资源单位)。 2、线程是轻量级的,没有自己独立的内存资源,使用的是进程的代码、数据段、bss段、堆(注意没有栈),环境变量...

m0_37622246的博客 308

Linux系统中的线程属性管理和线程的创建。

阻塞主线程,直到指定的子线程执行完毕,并可以获取子线程的退出状态。创建了一个新的子线程。

m0_74860500的博客 507

解密 Linux 线程:多线程编程与资源管理

Linux线程概念

A.的博客 4036

Linux进程与线程管理教程

Linux进程管理。

生活需要深度 720

linux 线程进程实验报告,linux进程线程管理实验报告

linux进程线程管理实验报告 西安郵電學院操作系统 LINUX 实验报告题 目 1: 进程______题 目 2: 线程管理__题 目 3: 互斥_____系部名称 : 计算机学院专业名称 :班 级 :学号 :学生姓名 :时间 :实验一: 进程管理一. 实验目的通过观察、分析实验现象,深入理解进程及进程在调度执行和内存空间等方面的特点,掌握在 POSIX 规范中 fork 和 kill 系统调用...

weixin_39952937的博客 640

Linux 线程深度解析:从内存管理到线程控制的核心机制

本文系统阐述 Linux 线程的核心概念与实现机制。首先介绍线程作为进程内执行流的本质,结合分页式存储管理解析虚拟地址到物理地址的映射过程,包括页表、页目录与 TLB 快表的优化机制,以及缺页异常的处理逻辑。其次对比进程与线程的资源共享特性,强调线程在资源占用、调度效率上的优势与健壮性风险。最后详细解析 POSIX 线程库的核心函数,包括线程创建(pthread_create)、终止(pthread_exit)、等待(pthread_join)与分离(pthread_detach)等操作,以及线程 ID 的

2301_80541270的博客 2299
上一篇: c/c++ 之指针的指针总结
下一篇: Redis---客户端和服务端
TuxedoLinux
博客等级 码龄9年 268粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值