多线程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程相关的知识,希望对你有一定的参考价值。
背景:随着多核处理器的普及,使用多线程并发成为构建高性能应用程序的关键。
编写并发程序比编写并行程序更加困难。与顺序执行的程序相比,并发程序更容易出错。
在发展初期,计算机还没有操作系统,计算机至始至终执行一个程序,这个程序直接访问计算机的所有资源,不能很好的利用昂贵的计算机资源。操作系统的发展使得多个程序可以同时运行,每个程序运行在自己的进程里,互相分离,各自独立执行,由操作系统来分配资源。有一些促进因素推动了操作系统支持多程序同时执行:1.资源利用。程序有时候需要等待外部的操作,比如输入或输出,并且在等待的时候不可能进行有价值的工作,在等待的时候让其他程序运行会提高效率。2.公平。多个程序对系统资源有平等的优先权,使各个程序能通过时间片方式来共享计算机。
后来出现了线程的概念,一个进程里可以包含多个线程,多个线程共享一个进程内的资源,比如内存。每个线程都有自己的堆栈和变量,线程也为多处理器系统中并行的使用硬件提供了可能,同一程序内的多个线程可以在多cpu的情况下同时调度。
多线程的优点:伴随着多核处理器和多处理器操作系统的普及,单线程程序会浪费过多的资源。例如在双处理器系统中,一个单线程程序会放弃一半的空闲cpu资源。
使用多线程也可以帮助我们在单处理器系统中实现更佳的吞吐量,如果一个进程程序是单线程的,这个处理器在等待一个I/O操作完成的时候仍然是空闲的。在一个多线程程序中,当第一个线程等待I/O操作完成的时候,另一个线程也可以运行,使得应用程序在遇到I/O阻塞的时候仍然有进展。
进程内的多个线程共享相同的内存空间地址且并发的运行,所以一个线程可以修改其他线程正在使用的变量。这就是线程不安全,针对这个问题必须要经过合理的协调来避免。
以上是关于多线程的主要内容,如果未能解决你的问题,请参考以下文章
什么是多线程,多进程?
多线程和多进程模式有啥区别
多线程Java多线程学习笔记 | 多线程基础知识
java中啥叫做线程?啥叫多线程?多线程的特点是啥
c++ 多线程与c多线程有啥区别?
IOS多线程安全(线程锁)