news 2026/7/14 18:47:14

Linux下创建线程:从入门到实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux下创建线程:从入门到实践

🐧 Linux下创建线程:从入门到实践

  • 📚 线程基础概念
  • 🔧 Linux线程创建方法
    • 1. 基本线程创建
    • 2. 带参数的线程
  • ⚙️ 线程属性设置
  • 🔄 线程同步机制
    • 1. 互斥锁(Mutex)
    • 2. 条件变量(Condition Variable)
  • 🏆 最佳实践建议
  • 🚀 性能考量
  • 🛠️ 实际应用示例:简易线程池
  • 📌 总结

📚 线程基础概念

在Linux系统中,线程是程序执行的最小单位,是进程中的一个实体。与进程相比,线程更加轻量级,创建和切换的开销更小,且同一进程内的线程共享内存空间。

进程
主线程
线程1
线程2
共享内存

🔧 Linux线程创建方法

Linux提供了多种创建线程的方式,最常用的是POSIX线程(pthread)库:

1. 基本线程创建

#include<pthread.h>#include<stdio.h>void*thread_function(void*arg){printf("线程执行中...\n");returnNULL;}intmain(){pthread_tthread_id;pthread_create(&thread_id,NULL,thread_function,NULL);pthread_join(thread_id,NULL);// 等待线程结束return0;}

2. 带参数的线程

void*print_number(void*arg){intnum=*(int*)arg;printf("接收到的数字: %d\n",num);returnNULL;}intmain(){pthread_ttid;intnum=42;pthread_create(&tid,NULL,print_number,&num);pthread_join(tid,NULL);return0;}

⚙️ 线程属性设置

线程属性可以通过pthread_attr_t结构体进行设置:

属性类型设置函数说明
分离状态pthread_attr_setdetachstate设置线程是否为可连接或分离
栈大小pthread_attr_setstacksize设置线程栈大小
调度策略pthread_attr_setschedpolicy设置线程调度策略
pthread_attr_tattr;pthread_attr_init(&attr);pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED);pthread_ttid;pthread_create(&tid,&attr,thread_function,NULL);pthread_attr_destroy(&attr);

🔄 线程同步机制

多线程编程中,同步是避免竞态条件的关键:

1. 互斥锁(Mutex)

pthread_mutex_tmutex=PTHREAD_MUTEX_INITIALIZER;void*thread_func(void*arg){pthread_mutex_lock(&mutex);// 临界区代码pthread_mutex_unlock(&mutex);returnNULL;}

2. 条件变量(Condition Variable)

线程A条件变量线程Bpthread_cond_wait()pthread_cond_signal()唤醒线程A条件变量线程B

🏆 最佳实践建议

  1. 资源管理:确保每个动态分配的资源都有明确的释放点
  2. 错误检查:所有pthread函数调用都应检查返回值
  3. 避免全局变量:尽量使用参数传递数据
  4. 线程安全:注意标准库函数是否线程安全

🚀 性能考量

90%9%1%线程创建开销比较进程创建线程创建线程池

🛠️ 实际应用示例:简易线程池

#defineTHREAD_NUM4void*worker(void*arg){// 工作任务处理returnNULL;}intmain(){pthread_tpool[THREAD_NUM];for(inti=0;i<THREAD_NUM;i++){pthread_create(&pool[i],NULL,worker,NULL);}// ... 分配任务 ...for(inti=0;i<THREAD_NUM;i++){pthread_join(pool[i],NULL);}return0;}

📌 总结

Linux下的线程编程是高性能应用程序开发的核心技能。通过合理使用pthread库提供的各种功能,可以构建高效、可靠的多线程应用。记住线程安全、资源管理和同步机制是多线程编程的关键所在。

💡小贴士:使用top -Hhtop命令可以查看系统中运行的线程情况!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 5:41:02

AMD 780M APU终极性能优化指南:一键释放35%AI加速潜力

AMD 780M APU终极性能优化指南&#xff1a;一键释放35%AI加速潜力 【免费下载链接】ROCmLibs-for-gfx1103-AMD780M-APU ROCm Library Files for gfx1103 and update with others arches based on AMD GPUs for use in Windows. 项目地址: https://gitcode.com/gh_mirrors/ro…

作者头像 李华
网站建设 2026/7/14 4:52:42

22、BIND 服务器配置、使用与安全指南

BIND 服务器配置、使用与安全指南 1. BIND 服务器基础操作 在启动或重启名称服务器时,检查系统日志中的错误和警告是一个很好的做法。守护进程控制脚本中的无效指令或选项可能会导致名称服务器出现错误,使其无法启动或突然停止。 以下是 BIND 服务器的基本操作命令: - 启…

作者头像 李华
网站建设 2026/7/14 16:01:02

wvp-GB28181-pro视频监控平台:从入门到精通的完整部署指南

wvp-GB28181-pro视频监控平台&#xff1a;从入门到精通的完整部署指南 【免费下载链接】wvp-GB28181-pro 项目地址: https://gitcode.com/GitHub_Trending/wv/wvp-GB28181-pro wvp-GB28181-pro是一款基于GB28181标准的开源视频监控平台&#xff0c;支持海康、大华等主流…

作者头像 李华
网站建设 2026/7/13 7:13:43

AndroidGen实战指南:突破移动AI代理评估瓶颈的深度解析

你可能会好奇&#xff0c;为什么现有的Android自主代理总是难以在真实环境中稳定运行&#xff1f;答案可能在于评估体系的根本缺陷。当前移动AI评估面临着三大核心痛点&#xff1a;环境模拟失真、任务覆盖不足、奖励机制不可靠。这些限制让开发者和研究者难以准确评估代理的真实…

作者头像 李华
网站建设 2026/7/13 23:37:23

金仓数据库(KingbaseES),三重革新,一文讲解

​兼容​是对企业历史投资的尊重​​是确保业务平稳过渡的基石 ​​然而 ​​这仅仅是故事的起点 ​在数字化转型的深水区&#xff0c;企业对数据库的需求早已超越“语法兼容”的基础诉求。无论是核心业务系统的稳定运行&#xff0c;还是敏感数据的安全防护&#xff0c;亦或是复…

作者头像 李华
网站建设 2026/7/13 1:05:47

ChatTTS音色定制终极指南:从零打造专属语音体验

如何快速解决语音合成音色单一问题 【免费下载链接】ChatTTS-ui 匹配ChatTTS的web界面和api接口 项目地址: https://gitcode.com/GitHub_Trending/ch/ChatTTS-ui 你是否遇到过这样的困扰&#xff1a;语音合成工具提供的音色千篇一律&#xff0c;无法满足个性化需求&…

作者头像 李华