2026.5.12 Linux

1.线程:是进程内部的一条执行路径,一个进程可以包含多个进程

2.进程和线程的区别

|------|------------|------------|
| | 进程 | 线程 |
| 最小单位 | 资源分配的最小单位 | CPU调度的最小那位 |
| 地址空间 | 有自己的独立地址空间 | 共享进程中的地址空间 |
| 消耗资源 | 消耗资源大 | 消耗资源小 |
| 切换 | 进程的切换开销大 | 切换小 |

  1. 线程创建函数pthread_creat

thread:线程ID

attr:线程属性(默认NULL)

start:线程入口函数

arg:传递线程函数的参数

当主线程结束时,子线程也会结束。

  1. 线程的特性:
  1. 线程间并发执行,具体调度根据操作系统不同决定
  2. 资源共享,线程共享进程的资源(全局变量,堆内存,文件描述符)
  3. 独立的栈空间,局部变量存储在各自的栈空间中
  1. 函数 int pthread_join(pthread_t thrad, void **retval)

等待某个线程结束并回收线程资源

thread:等待的线程ID

retval:接收线程返回值的指针

void pthread_exit(void *retval)

终止当前线程,并返回结果

如果不需要返回值,填NULL

如果需要返回值,则必须指向全局变量或动态分配的内存(不能是栈上的内容,因为线程终止后栈内容会被释放)

练习:创建全局变量val初值为0,创建两个子线程运行val++,每个子线程循环1000次,主线程打印val的值

相关推荐
时空无限9 分钟前
vllm 大模型启动缓存相关环境变量 export
linux·缓存·vllm
独隅17 分钟前
IntelliJ IDEA 接入多种AI大模型插件终极指南(2026.1 企业合规版)
java·人工智能·intellij-idea
Echo_cy_18 分钟前
基于ZYNQ-7000的Ethernet驱动配置
linux·驱动开发·嵌入式硬件·fpga开发·ethernet·zynq
ShineWinsu33 分钟前
对于Linux:模版方法类的解析以及socket、TcpSocket的封装
linux·c++·面试·socket·模板方法模式·封装·tcpsocket
还是奇怪1 小时前
Simon Willison 用 DSPy 优化 Datasette Agent 提示词:提示工程正在变成可测试的软件工程
java·开发语言·软件工程
zfoo-framework1 小时前
1.ansible安装 2.虚拟机克隆
java
码上解惑1 小时前
从 Dify 工作流说起:常用节点怎么选、怎样组合?
java·人工智能·ai·agent·dify·智能体·spring ai
无足鸟ICT1 小时前
【RHCA+】查看变量
linux·运维·服务器
Kina_C1 小时前
Linux DNS 服务器-从高速缓存到辅助 DNS 部署指南
linux·运维·服务器·dns
suaizai_2 小时前
TypeScript 7 正式发布!Vue 暂被 “拒之门外“ !!!
linux·运维·ubuntu