多线程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程相关的知识,希望对你有一定的参考价值。

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

    什么是多线程,多进程?

    多线程和多进程模式有啥区别

    多线程Java多线程学习笔记 | 多线程基础知识

    java中啥叫做线程?啥叫多线程?多线程的特点是啥

    c++ 多线程与c多线程有啥区别?

    IOS多线程安全(线程锁)