当前位置: 首页 > news >正文

Linux线程操作全指南

Linux线程概述与操作指南

线程与进程对比

  • 线程是轻量级进程,属于某个进程,共享进程资源但拥有独立栈区(默认8MB)。
  • 进程资源独立,稳定性更高;线程崩溃可能导致整个进程崩溃。
  • 线程创建开销更小(仅需分配栈区),并发度高于进程。

线程操作步骤(POSIX标准)

创建线程
使用pthread_create函数:

int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);
  • thread:返回线程ID。
  • attr:线程属性(通常为NULL)。
  • start_routine:线程执行的函数(回调函数)。
  • arg:传递给回调函数的参数。

获取线程ID

pthread_t pthread_self(void);

返回当前线程ID,格式为unsigned long int%lu)。


线程控制函数

线程退出

  • 主动退出pthread_exit(void *retval)
    retval为线程退出状态(如返回结果或错误码)。
  • 强制终止pthread_cancel(pthread_t thread)
    请求终止指定线程。

资源回收

  • 阻塞回收pthread_join(pthread_t thread, void **retval)
    等待指定线程结束并回收资源,retval接收线程退出状态。
  • 自动回收pthread_detach(pthread_t thread)
    设置分离属性,线程退出后系统自动回收资源(无需pthread_join)。

线程信息查看命令

  1. 显示线程详细信息:
    ps -eLo pid,ppid,lwp,stat,comm
    • lwp:线程ID,stat:线程状态。
  2. 查看线程与进程关系:
    ps -eLf

注意事项

  • 稳定性:多线程程序中需确保资源访问同步(如互斥锁)。
  • 错误处理:检查函数返回值(非0表示失败)。
  • 分离属性:设置pthread_detach后不可再调用pthread_join

示例代码片段:

void *thread_func(void *arg) { printf("Thread ID: %lu\n", pthread_self()); pthread_exit((void *)42); // 退出并返回状态 } pthread_t tid; pthread_create(&tid, NULL, thread_func, NULL); int *retval; pthread_join(tid, (void **)&retval); // 阻塞等待并回收
http://www.cnnetsun.cn/news/92316.html

相关文章:

  • LobeChat能否对接Telegram Bot?跨平台消息同步实现
  • AI如何用博图加速工业自动化开发
  • C++:二叉搜索树(BST)完全指南(从概念原理、核心操作到底层实现)
  • Splashtop AEM 在 G2冬季报告中斩获“最佳预估 ROI”殊荣
  • 赋能传统硬件:具身智能如何激活工业机器人的二次生命
  • 【模板:求组合数】信息学奥赛一本通 1648:【例 1】「NOIP2011」计算系数 | 1866:【11NOIP提高组】计算系数 | 洛谷 P1313 [NOIP 2011 提高组] 计算系数
  • 金运环球:金价高位回落,非农与零售数据即将来袭
  • 活动力度大的门头招牌企业
  • 【毕业设计】基于JavaWeb的兽医站管理系统的设计与实现(源码+文档+远程调试,全bao定制等)
  • Java毕设选题推荐:基于JavaWeb的兽医站管理系统的设计与实现现代化兽医站管理系统【附源码、mysql、文档、调试+代码讲解+全bao等】
  • Arduino配置8266开发板
  • 【课程设计/毕业设计】基于SpringBoot+Vue茶叶销售系统的设计与实现基于Java语言的茶叶销售系统的前端设计与实现【附源码、数据库、万字文档】
  • 41. 缺失的第一个正数
  • 打了一堆板子,才发现是VDD_EXT的锅
  • 技术亲民倒计时!飞猫 RedCap 轻量化 5G 随身 WiFi 即将上市!
  • # 深入 Ascend C 内存模型:掌握UB、GM与流水线优化,打造极致AI算子
  • 冥想第一千七百三十五天(1735)
  • 代理IP和普通IP有什么区别?这篇文章帮你捋明白
  • 体系结构分类和指令系统
  • 基于AI数字人系统源码的低成本开发方案与实践经验
  • SQL 调优全解:从 20 秒到 200 ms 的 6 步实战笔记(附脚本)
  • YOLO目标检测模型如何对接Apipost平台
  • 简单的创建一个Spring Boot网页
  • 鼠标滚轮缩放图片:前端实现高清无损放大技巧(附实战代码)
  • Numpy库实践2_索引和数组的操作
  • 图解 - 红黑树(插入)
  • Memgraph 全新 AI 图工具包:一键构建 GraphRAG 聊天机器人,实现快速上下文感知响应
  • 初始化列表和特殊成员
  • (二)前端基础框架构建
  • vLLM推理引擎教程6-Nsight Systems性能分析