linux多线程编程

本文详细介绍了Linux下的线程概念,包括进程与线程的区别、线程的执行效率、健壮性及通信方式。重点讲解了线程的创建、退出和等待,并阐述了互斥锁在多线程同步中的作用以及死锁的概念和产生条件。通过示例代码演示了如何在Linux中进行线程编程,强调了使用线程可以节约资源并提高执行效率。
摘要由CSDN通过智能技术生成

linux多线程编程

linux线程介绍

在这里插入图片描述

进程与线程的区别

1 进程是资源分配的单元,创建进程时系统需要分配内存资源,而线程是资源调度的单元,共享进程中的地址空间,创建线程不会有新的开销.
2.执行效率不同.线程的执行效率高,进程执行效率低,因为减少了地址切换的开销
3.健壮性不同:多进程健壮性比多线程好一点,因为多线程中其中一个线程崩了进程就崩了,而多进程中一个进程崩了不影响其他进程
4.通讯方式不同
进程:管道 消息队列 信号量 socket 共享内存
线程:互斥锁 信号量 条件变量 信号
在这里插入图片描述
在这里插入图片描述

使用线程的理由

1 节约资源,切换效率快
2.通信更加方便
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

线程demo

在这里插入图片描述
1.创建线程pthread_create(ID,线程属性(一般NULL),调用函数,函数参数传递)
需要传递多个参数是通过创建结构体来实现
在这里插入图片描述
2线程退出pthread_exit(void *)
*退出变量必须加static关键字或者为NULL
在这里插入图片描述
3线程等待pthread_join(ID,void **)
在这里插入图片描述

互斥锁

在这里插入图片描述
在这里插入图片描述
括号里mutex改为* mutex

互斥锁的使用

在这里插入图片描述
在这里插入图片描述
互斥锁的作用
保证进入锁后运行完锁住的代码在退出,并不能保证先后顺序,例如有三个线程上锁,一个线程运行完后,其他两个线程会竞争这把锁.

什么是死锁?

在这里插入图片描述

产生死锁的情境

在这里插入图片描述

产生死锁的条件

在这里插入图片描述
1.一个锁同一时刻只能被一个线程拿到
2.拿到后是不会放开的
3.拿到后也不会被其他线程锁剥夺
4.死锁后陷入循环

条件变量

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值