Linux系统编程-线程

本文详细介绍了线程的基本概念,包括线程与进程的区别,以及它们的优缺点。文章还涵盖了线程创建、退出、等待、ID获取、取消和清理函数的使用示例,帮助读者理解如何在实际编程中有效地管理线程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、线程的基本概念

实现多任务并发运行;

线程属于进程,一个进程种可以有多个线程,并且多个线程可以并发执行;

线程是一个轻量级的进程,多个线程运行在同一个进程空间里面,多个线程共享一个进程资源

二、优缺点

优点:占用系统的资源少,通信简单

缺点:调度没有进程方便, 对资源的操作不安全

三、线程与进程的区别

进程有独立的地址空间,线程没有单独的地址空间。(同一进程内的线程共享进程的地址空间)

四、为什么要引入线程

启动一个进程所花费的空间远远大于启动一个线程所花费的空间(30倍左右),而且,线程间彼此切换所需的时间也远远小于进程间切换所需要的时间(>10倍)

维护进程对内核的消耗远远大于线程

线程间可以共享数据,更容易通信

五、进程VS线程

1)需要频繁创建销毁的优先用线程,因为对进程来说创建和销毁一个进程代价是很大的。

2)线程的切换速度快,所以在需要大量计算,切换频繁时用线程,还有耗时的操作使用线程可提高应用程序的响应。

3)强相关的处理用线程,弱相关的处理用进程;

什么叫强相关、弱相关?理论上很难定义,给个简单的例子就明白了。

一般的服务器需要完成如下任务:消息收发、消息处理。“消息收发”和“消息处理”就是弱相关的任务,而“消息处理”里面可能又分为“消息解码”、“业务处理”,这两个任务相对来说相关性就要强多了。因此“消息收发”和“消息处理”可以分进程设计,“消息解码”、“业务处理”可以分线程设计。

当然这种划分方式不是一成不变的,也可以根据实际情况进行调整。

4)因为对CPU系统的效率使用上线程更占优,所以可能要发展到多机分布的用进程,多核分布用线程;

5)需要更稳定安全时,适合选择进程;需要速度时,选择线程更好。

6)如果线程和进程对当前的任务处理各有优缺点,使用你喜欢的,你熟悉的;

7)线程一死(非正常退出)全死;(所有的线程属于进程,当其中一个线程非正常死亡,整个进程结束,所以所有的线程都结束);

六、相关函数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

膽小

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值