news 2026/4/16 9:03:55

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/4/12 0:50:11

《网络数据安全风险评估办法》出台在即,CCRC-DSA成关键人才!

随着国家互联网信息办公室在2025年12月发布《网络数据安全风险评估办法&#xff08;征求意见稿&#xff09;》&#xff0c;我国数据安全监管的“另一只靴子”即将落地。这份《办法》首次在国家法规层面&#xff0c;为企业开展数据安全风险评估构筑了强制性、系统化的操作框架&a…

作者头像 李华
网站建设 2026/4/16 2:07:38

魔兽世界:私服复刻经典版本让玩家重新回到60级的艾泽拉斯大陆

在游戏世界里&#xff0c;魔兽世界私服是一个特别的存在。它为一些玩家提供了重温经典的机会&#xff0c;让那些因各种原因无法在官服继续游戏的人&#xff0c;能再次踏入艾泽拉斯大陆。许多玩家在私服中找回了曾经在魔兽世界里的热血与激情&#xff0c;和老友们重新组队刷本&a…

作者头像 李华
网站建设 2026/4/14 20:33:01

26、Linux网络防御与入侵检测全解析

Linux网络防御与入侵检测全解析 1. iptables基础 iptables可用于设置、维护和检查Linux内核中指定的IP数据包过滤规则表。规则表包含两种链: - 内置链 - 用户自定义链 每条链由一组规则组成,这些规则用于匹配一组数据包,并确定匹配数据包时应采取的操作。iptables的使用…

作者头像 李华
网站建设 2026/4/11 15:58:18

Python+Vue的中医院问诊系统的设计与实现 私聊+可视化 Pycharm django flask

这里写目录标题项目介绍项目展示详细视频演示技术栈文章下方名片联系我即可~解决的思路开发技术介绍性能/安全/负载方面python语言Django框架介绍技术路线关键代码详细视频演示收藏关注不迷路&#xff01;&#xff01;需要的小伙伴可以发链接或者截图给我 项目介绍 本系统共有…

作者头像 李华
网站建设 2026/4/3 20:17:01

如何用Apple Cursor为Windows和Linux系统添加macOS精致鼠标指针

如何用Apple Cursor为Windows和Linux系统添加macOS精致鼠标指针 【免费下载链接】apple_cursor Free & Open source macOS Cursors. 项目地址: https://gitcode.com/gh_mirrors/ap/apple_cursor 还在忍受系统默认的单调鼠标指针吗&#xff1f;Apple Cursor是一款免费…

作者头像 李华
网站建设 2026/4/11 16:45:21

ctfshow web入门web160

1.通过dirsearch可以摸清结构,方便我们规划攻击方式2.查看网站用的什么服务器&#xff0c;.htaccess只能用于Apache服务器&#xff0c;所以配置文件要上传.user.ini&#xff0c;刚好上传文件所在目录也有.php文件可以包含3.先上传一个图片后缀的文件用于绕过前端&#xff0c;没…

作者头像 李华