学习嵌入式第二十五天

wait

pid_t wait(int *status);

  1. 参数

    • status:一个指向整数的指针,用于存储子进程的退出状态。如果调用成功,wait 函数会将子进程的退出状态存储在这个指针指向的内存位置。
  2. 返回值

    • 成功时,wait 函数返回终止的子进程的进程ID(PID)。
    • 如果有错误发生,返回值是-1,并且 errno 会被设置为相应的错误代码。

如果父进程没有调用 wait 或者 waitpid 来收集子进程的状态信息,子进程将成为僵尸进程(zombie)。

wait 函数可以与 WNOHANG 标志一起使用,以实现非阻塞等待,此时如果没有子进程终止,wait 会立即返回0而不是挂起。

线程

概念:

线程是轻量级进程,一般是一个进程中的多个任务。

进程是系统中最小的资源分配单位.

线程是系统中最小的执行单位。

进程和线程是操作系统中两种不同的执行单元,它们在资源分配、执行方式和通信机制上存在一些关键的区别:

定义:

进程:进程是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的实例。每个进程都有自己的独立内存空间,至少一个线程(主线程),以及可能的其他资源如打开的文件、子进程等。

线程:线程是进程中的一个实体,是CPU调度和执行的单位,是程序执行的最小单位。线程共享所属进程的资源,如内存空间和文件句柄,但拥有自己的栈和程序计数器。

资源分配:

进程拥有独立的内存空间,一个进程的内存空间与其他进程是隔离的。

线程共享进程的内存空间,这使得线程间的通信更加高效,但也需要同步机制来避免数据冲突。

创建多线程:(NPTL)

int pthread_create(

pthread_t *thread,

const pthread_attr_t *attr,

void *(*start_routine) (void *),

void *arg);

功能:该函数可以创建指定的一个线程。

参数:

thread 线程id,需要实现定义并由该函数返回。

attr 线程属性,一般是NULL,表示默认属性。(可结合性+分离属性)

start_routine

指向指针函数的函数指针。

本质上是一个函数的名称即可。

称为

th 回调函数,是线程的执行空间。

{

}

arg 回调函数的参数,即参数3的指针函数参数。

返回值:成功 0

失败 错误码

线程的执行体现在线程的回调函数。

线程的退出:

void pthread_exit(void *retval);

功能:子线程自行退出

参数: retval 线程退出时候的返回状态,临死遗言。

返回值:无

线程的回收:

int pthread_join(pthread_t thread, void **retval);

功能:通过该函数可以将指定的线程资源回收,该函数具有

阻塞等待功能,如果指定的线程没有结束,则回收线程

会阻塞。

参数:thread 要回收的子线程tid

retval 要回收的子线程返回值/状态。==》ptread_exit(值);

返回值:成功 0

失败 -1;

相关推荐
晓梦林2 分钟前
Tools2靶场学习笔记
笔记·学习
paopaokaka_luck1 小时前
基于springboot3+vue3的车间生产管理系统(Echarts图形化分析、BI报表)
java·前端·spring boot·学习·echarts
Canmag 兴隆磁性1 小时前
自动磁场分布测试+镭雕设备 AT-C
学习·永磁材料·磁场分布测试
小小帅呀2 小时前
学习VLA第3天:训练一个最简单的神经网络
人工智能·神经网络·学习
m4Rk_2 小时前
【论文阅读】Agent 记忆机制(50):PACE——按下一步预测价值动态分配历史记忆粒度
论文阅读·人工智能·学习·开源·github
zQ.ii3 小时前
WPF 触发器学习笔记
笔记·学习·wpf
边境悍匪3 小时前
蜗牛学苑 Java 智能体学习 Day28|JavaScript、CSS 布局思维导图复盘
学习
吃好睡好便好4 小时前
取整函数的使用
学习·matlab·生活·取整函数
那年窗外下的雪.4 小时前
STM32嵌入式学习 01:GPIO 输出与 LED 闪烁
stm32·单片机·学习
koi77u4 小时前
嵌入式学习---进程与线程(1)
linux·服务器·学习