news 2026/4/23 20:24:30

Linux线程操作全指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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); // 阻塞等待并回收
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 11:29:31

30秒创建!Ubuntu+Python+VSCode开发沙箱

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建开箱即用的Python开发环境配置:1. 安装Python 3.11 2. 配置VSCode Server 3. 预装Jupyter Lab 4. 设置代码自动格式化。要求生成可直接在InsCode平台运行的docker-c…

作者头像 李华
网站建设 2026/4/23 15:53:24

java计算机毕业设计书网 纸电融合知识共享平台 全域图书流转中枢

计算机毕业设计书网rmc539(配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。纸质书在角落落灰,电子书躺在硬盘“吃灰”,读者找不到下一本,书店回…

作者头像 李华
网站建设 2026/4/23 14:41:56

LLM 工具调用的范式演进与认知模型集成

引言:为什么 LLM 需要工具? 大语言模型的核心能力是文本生成,但其存在三个根本性限制: 限制类型具体表现工具调用如何解决知识时效性训练数据截止于某时间点调用搜索引擎/API 获取实时信息计算精确性浮点运算、复杂数学易出错调用…

作者头像 李华
网站建设 2026/4/23 14:41:13

StateFlow

StateFlow 是 Kotlin 协程库中提供的状态流,属于冷流(Cold Stream)的优化变种,核心用于持有并发射单一、可观察的状态,是 Android 开发中实现 MVVM 架构状态管理的核心工具之一。 一、核心特性 持有当前状态:始终保存最新的状态值,新订阅者会立即收到当前最新值(区别于…

作者头像 李华
网站建设 2026/4/23 13:14:35

金运环球:金银走势分化待非农破局,早盘关注关键技术位防守

【市场早间简述】周一(12月15日)市场在剧烈震荡后呈现分化。现货黄金全天震荡,最终微涨收于4304.91美元/盎司附近,进行高位整固。现货白银表现强劲,大幅上涨2.60%,收于63.610美元/盎司,再次逼近…

作者头像 李华
网站建设 2026/4/23 13:09:09

C#之安装和使用Sqlite数据库

C#之安装和使用Sqlite数据库 Sqlite数据库使用流程 1.安装 System.Data.Sqlite 1.0.117 2.安装 sqlite.codefirst3.App.Config配置连接字符串 5.配置<provider invariantName"System.Data.SQLite" type"System.Data.SQLite.EF6.SQLiteProviderServices, Sy…

作者头像 李华