news 2026/5/13 17:15:08

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/5/13 2:54:35

企业级应用中的数据库连接异常处理实战

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个Spring Boot应用,展示企业级数据库连接异常处理方案。包含:1) 多数据源配置;2) HikariCP连接池优化;3) 自定义异常处理器&am…

作者头像 李华
网站建设 2026/5/4 22:36:04

LobeChat能否支持GraphQL订阅?实时更新功能探索

LobeChat能否支持GraphQL订阅?实时更新功能探索 在构建现代AI聊天应用的今天,用户早已不满足于“发送问题、等待回答”的简单交互模式。越来越多的应用场景要求系统具备实时性:比如多个设备间的消息同步、插件执行进度的动态反馈、语音识别过…

作者头像 李华
网站建设 2026/5/9 17:35:50

传统vs智能:AI如何提升前端面试准备效率10倍

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 构建一个智能前端面试准备系统,功能包括:1) 基于用户技术栈和能力评估的个性化题目推荐 2) 自动记录错题并生成薄弱知识点图谱 3) 智能答案比对(…

作者头像 李华
网站建设 2026/5/3 16:32:59

Coze工作流下载:AI如何自动化你的开发流程

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个Python脚本,使用Coze工作流下载API自动下载指定工作流文件,并解析JSON内容。脚本应包含错误处理和日志记录功能,确保下载过程的稳定性。…

作者头像 李华
网站建设 2026/5/13 10:34:39

为什么map函数比for循环快?性能对比实测

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个性能对比测试:1) 用for循环和map分别处理100万个数据的平方运算 2) 使用timeit模块测量执行时间 3) 分析内存使用差异。要求生成可视化对比图表,并解…

作者头像 李华
网站建设 2026/5/12 5:18:30

如何在Android中使用StateFlow和MutableStateFlow?

在 Android 中,StateFlow + MutableStateFlow 是 MVVM 架构下UI 状态管理的首选方案,核心遵循「内部可变、外部只读」的封装原则,结合 ViewModel 存放状态、Lifecycle 管理订阅生命周期,确保状态安全且无内存泄漏。以下是完整的使用步骤和最佳实践: 一、前置准备(依赖)…

作者头像 李华