导图社区 多线程的原理
这是一个关于多线程的原理的思维导图,讲述了多线程的原理的相关故事,如果你对多线程的原理的故事感兴趣,欢迎对该思维导图收藏和点赞~
编辑于2022-10-24 10:13:24多线程的原理
并行和并发的区别与联系
并行指多个线程同时执行不同任务,同时进行
并发指多个线程交替执行同一个任务,交替进行
两者都是为了提高程序的执行效率
线程与进程的关系
进程是操作系统中资源分配的最小单位,拥有独立的地址空间和系统资源
线程是进程中的一个执行单元,共享进程的资源
一个进程可以包含多个线程,多个线程共享同一进程的资源
多线程的优势
提高程序的响应性,增强用户体验
提高程序的性能,利用多核处理器并行处理任务
能充分利用资源,提高系统的资源利用率
便于编程和维护,简化了程序的结构
多线程的实现方式
操作系统级线程
由操作系统内核提供支持,线程切换的开销较大
如Windows的CreateThread()、Linux的pthread_create()
用户级线程
由用户程序库提供支持,线程切换的开销较小
如Java的Thread类、Python的threading模块
线程的调度
抢占式调度
由操作系统决定在何时中断线程以切换到另一个线程
优先级高的线程会优先执行,但可能导致优先级低的线程饥饿
协同式调度
由线程自己决定何时让出CPU,主动交出控制权
更加公平,但一个线程的错误可能导致整个程序崩溃
多线程的同步与互斥
同步
保证多个线程按照一定的顺序去访问共享资源
常用的同步机制有信号量、互斥锁、条件变量等
互斥
保证在同一时刻只有一个线程访问共享资源
常用的互斥机制有互斥锁、读写锁等
多线程的常见问题与解决方法
死锁
多个线程相互等待对方释放资源导致无法继续执行
避免死锁可通过资源有序分配、避免嵌套锁等方法
竞态条件
多个线程同时访问共享资源,导致执行结果不确定
可通过使用互斥锁、条件变量等机制来避免竞态条件
线程安全
多线程环境下,多个线程访问同一个对象或资源时的安全性
可通过加锁、使用原子操作等方式保证线程安全