news 2026/8/7 22:02:57

Linux线程:轻量高效但需谨慎

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux线程:轻量高效但需谨慎

Linux线程概述

Linux线程是轻量级进程(LWP),属于某个进程并共享其资源(如内存),但各自拥有独立的栈区。相比进程,线程的优势在于创建开销小(仅需分配8MB栈区,而进程需3GB空间)、并发度高,但稳定性较差——一个线程崩溃可能导致整个进程退出。

线程管理函数

创建线程

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);

线程退出

void pthread_exit(void *retval); int pthread_cancel(pthread_t thread);

资源回收

int pthread_join(pthread_t thread, void **retval); // 阻塞回收 int pthread_detach(pthread_t thread); // 自动回收

线程同步机制

互斥锁(Mutex)

用于保护临界资源,确保排他性访问:

pthread_mutex_t mutex; pthread_mutex_init(&mutex, NULL); // 初始化 pthread_mutex_lock(&mutex); // 加锁(原子操作) pthread_mutex_unlock(&mutex); // 解锁 pthread_mutex_destroy(&mutex); // 销毁
信号量(Semaphore)

实现线程间同步,支持PV操作:

sem_t sem; sem_init(&sem, 0, 1); // 初始化(二值信号量) sem_wait(&sem); // P操作(申请资源) sem_post(&sem); // V操作(释放资源) sem_destroy(&sem); // 销毁

死锁条件

  1. 互斥条件:资源独占性
  2. 请求与保持:持有资源的同时请求新资源
  3. 非抢占:已获资源不可被强制剥夺
  4. 循环等待:线程间形成环形依赖链

调试命令

  • 查看线程信息:
    ps -eLo pid,ppid,lwp,stat,comm ps -eLf

关键注意事项

  • 互斥锁保护的临界区应保持短小,避免休眠或耗时操作
  • 信号量适用于存在多个同类资源的场景(初始值可>1)
  • 分离线程(pthread_detach)退出后系统自动回收资源
  • 线程崩溃会连带终止所属进程,需谨慎处理错误边界
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/6 12:15:02

今天咱们来聊一个挺有意思的优化算法改进——基于透镜成像反向策略的海洋捕食者算法。这个改进版本在原始MPA基础上搞了点新花样,咱们直接上干货看代码实现

基于透镜成像反向策略的多策略改进海洋捕食者优化算法 算法改进先看这个反向策略的实现。透镜成像反向学习可不是简单的镜像对称,它通过引入缩放因子让反向解更灵活。咱们来看这段关键代码: def lens_opposite(position, lb, ub, alpha0.8):focal_point …

作者头像 李华
网站建设 2026/8/7 20:18:53

Gitee:本土化DevOps平台如何重塑中国开发者生态

Gitee:本土化DevOps平台如何重塑中国开发者生态 在数字化转型浪潮席卷全球的当下,中国开发者正迎来前所未有的机遇与挑战。作为国内领先的一站式DevOps平台,Gitee凭借其独特的本土化优势,正在重新定义代码托管与协作开发的行业标准…

作者头像 李华
网站建设 2026/8/7 20:19:10

vCenter Server 8.0U3h 新增功能简介

VMware vCenter Server 8.0U3h 发布 - 集中管理 vSphere 环境 Server Management Software | vCenter 请访问原文链接:https://sysin.org/blog/vmware-vcenter-8-u3/ 查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org vSphere 8…

作者头像 李华
网站建设 2026/8/6 17:53:49

Cisco NX-OS 10.6(2)F 发布 - 数据中心网络操作系统

Cisco NX-OS Software Release 10.6(2)F - 数据中心网络操作系统 NX-OS 网络操作系统 请访问原文链接:https://sysin.org/blog/cisco-nx-os-10/ 查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org Cisco NX-OS Cisco NX-OS 操作系…

作者头像 李华
网站建设 2026/8/7 15:19:47

Ubuntu24.04无操作卡死,无法唤醒问题以及内核版本切换记录

Ubuntu24.04日常使用过程的问题记录 2025/12/17 无操作卡死,无法唤醒 问题描述: 在使用Ubuntu24.04 内核版本 6.14.0-37 时,笔记本电脑无操作一段时间后卡死在停留界面无反应,或者黑屏但是没有关机,远程连接ssh中断&am…

作者头像 李华
网站建设 2026/8/6 18:05:21

全场景覆盖・全流程智控:分布式解决方案让多功能厅 “不止于多”

随着社会发展,多功能厅以其功能的多样性(如会议厅、视频会议厅、报告厅、学术讨论厅、培训厅等),特别契合我国国情需求,近年来实现了迅速普及与广泛应用。如今,多功能厅正呈现从大规模向小规模延伸、从单一…

作者头像 李华