`
xuebingnanmm
  • 浏览: 176526 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

什么是多线程、多进程?

    博客分类:
  • C++
阅读更多

■什么是多线程:

      多线程是为了使得多个线程并行的工作以完成多项任务,以提高系统的效率。线程是在同一时间需要完成多项任务的时候被实现的。

      使用线程的好处有以下几点:

     ·使用线程可以把占据长时间的程序中的任务放到后台去处理

     ·用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度

     ·程序的运行速度可能加快

     ·在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较游泳了。在这种情况下我们可以释放一些珍贵的资源如内存占用等等。

 

 

■什么是多进程:

      进程是程序在计算机上的一次执行活动。当你运行一个程序,你就启动了一个进程。显然,程序是死的(静态的),进程是活的(动态的)。进程可以分为系统进程和用户进程。凡是用于完成操作系统的各种功能的进程就是系统进程,它们就是处于运行状态下的操作系统本身;用户进程就不必我多讲了吧,所有由你启动的进程都是用户进程。进程是操作系统进行资源分配的单位。
      在Windows下,进程又被细化为线程,也就是一个进程下有多个能独立运行的更小的单位。
在同一个时间里,同一个计算机系统中如果允许两个或两个以上的进程处于运行状态,这便是多任务。现代的操作系统几乎都是多任务操作系统,能够同时管理多个进程的运行。 多任务带来的好处是明显的,比如你可以边听mp3边上网,与此同时甚至可以将下载的文档打印出来,而这些任务之间丝毫不会相互干扰。那么这里就涉及到并行的问题,俗话说,一心不能二用,这对计算机也一样,原则上一个CPU只能分配给一个进程,以便运行这个进程。我们通常使用的计算机中只有一个CPU,也就是说只有一颗心,要让它一心多用,同时运行多个进程,就必须使用并发技术。实现并发技术相当复杂,最容易理解的是“时间片轮转进程调度算法”,它的思想简单介绍如下:在操作系统的管理下,所有正在运行的进程轮流使用CPU,每个进程允许占用CPU的时间非常短(比如10毫秒),这样用户根本感觉不出来CPU是在轮流为多个进程服务,就好象所有的进程都在不间断地运行一样。但实际上在任何一个时间内有且仅有一个进程占有CPU。
      如果一台计算机有多个CPU,情况就不同了,如果进程数小于CPU数,则不同的进程可以分配给不同的CPU来运行,这样,多个进程就是真正同时运行的,这便是并行。但如果进程数大于CPU数,则仍然需要使用并发技术。
      在Windows中,进行CPU分配是以线程为单位的,一个进程可能由多个线程组成,这时情况更加复杂,但简单地说,有如下关系:

      总线程数<= CPU数量:并行运行

      总线程数> CPU数量:并发运行

      并行运行的效率显然高于并发运行,所以在多CPU的计算机中,多任务的效率比较高。但是,如果在多CPU计算机中只运行一个进程(线程),就不能发挥多CPU的优势。

      这里涉及到多任务操作系统的问题,多任务操作系统(如Windows)的基本原理是:操作系统将CPU的时间片分配给多个线程,每个线程在操作系统指定的时间片内完成(注意,这里的多个线程是分属于不同进程的).操作系统不断的从一个线程的执行切换到另一个线程的执行,如此往复,宏观上看来,就好像是多个线程在一起执行.由于这多个线程分属于不同的进程,因此在我们看来,就好像是多个进程在同时执行,这样就实现了多任务

 

     进程是静态的,线程是动态的,这是操作系统实现的在一块静态内存中同时运行多个程序,而每个程序又分成很多部分处理,提高效率,并行只是宏观印象,微观上一切的处理都是串行处理的(单cpu环境下)

 

     用一句话做总结:虽然操作系统是多线程的,但CPU每一时刻只能做一件事,和人的大脑是一样的,呵呵。

分享到:
评论

相关推荐

    c语言多进程多线程编程

    在计算机科学中,多进程和多线程是两种并发执行的方式,它们允许程序在同一时间处理多个任务,从而提高系统的效率和响应性。C语言作为一门底层且强大的编程语言,提供了丰富的系统调用接口来实现多进程和多线程编程...

    多线程与多进程的优缺点比较

    描述了操作系统中多线程和多进程的主要优缺点,对于学习操作系统有很好帮助。

    多线程多进程

    多线程多进程对比和应用 多线程多进程是两个不同的概念,都是为了提高程序的执行效率和response速度,但它们之间有着很大的区别。 进程 进程是具有一定的独立功能的程序,对某一个数据集合上的一次运行活动,是...

    VC++多线程与多进程编程

    在编程领域,多线程和多进程是提升应用程序性能、实现并发执行的关键技术。本资料“VC++多线程与多进程编程”专注于利用Microsoft Visual C++(VC++)进行多线程和多进程的实践操作,是初学者掌握这些高级编程概念的...

    多线程和多进程的管理

    #### 一、多进程与多线程的概念 - **多进程**:是指在操作系统中能够同时运行多个程序的过程。每个进程都有独立的代码、数据空间和资源,彼此之间不会互相影响。 - **多线程**:是在同一进程中,通过共享内存的方式...

    多线程与多进程.rar

    在编程领域,多线程和多进程是两个关键的概念,特别是在Python这样的高级语言中,它们被广泛用于提高程序的执行效率和并发性。本资源"多线程与多进程.rar"显然提供了关于如何在Python中实现多线程和多进程的实例代码...

    PHP实现多线程多进程

    然而,在某些场景下,如后台任务处理、大量数据计算等,使用多线程或多进程可以显著提高程序的执行效率。 #### 关键概念解释 1. **进程**:进程是程序的一次执行过程,每个进程都有独立的地址空间和其他资源(如...

    c语言__多进程和多线程.doc

    c语言__多进程和多线程 多进程程序的特点: 1. 并行化:将复杂的事件分解成简单的事件,各个事件可以并发执行,提高程序的效率。 2. 简单有序:每个进程的设计是简单的,对每个进程的设计是分开的,总控部分小心...

    linux 多进程多线程编程

    Linux 多进程多线程编程 Linux 多进程多线程编程是指在 Linux 操作系统下使用 C 语言进行多进程和多线程编程的技术。该技术可以大幅度提高程序的执行效率和响应速度,提高系统的并发能力和资源利用率。 1. 创建...

    Linux下多线程及多进程及同步与互斥编程详细介绍

    Linux下多线程及多进程及同步与互斥编程详细介绍

    多线程与多进程方法对比

    在计算机科学领域,多线程和多进程是两种常见的并发执行模型,它们允许程序同时处理多个任务,提高系统资源的利用率和程序的响应速度。在本案例中,我们通过两个Python脚本TD.py(代表多线程)和MP.py(代表多进程)...

    浅析Python多线程与多进程的使用

    本篇文章将深入探讨Python中的多线程和多进程概念,以及它们在实际应用中的优缺点。 首先,我们要理解“线程”和“进程”的基本概念。线程是程序执行的最小单位,一个进程中可以有多个线程,它们共享同一份内存空间...

    多协程、多线程、多进程代码

    在Python编程中,多协程、多线程和多进程是实现并发执行任务的重要机制,它们可以帮助我们提高程序的执行效率,充分利用系统资源。本文将深入探讨这些概念以及它们在Python中的实现方式。 首先,我们要了解并发的...

    操作系统,多线程编程,多进程编程,java

    在操作系统中,多线程编程和多进程编程是并发执行任务的重要手段,特别是在Java这样的高级编程语言中,它们的应用尤为广泛。 首先,我们要理解“多线程”这一概念。线程是操作系统中的一个基本执行单元,每个线程都...

    unix多线程/多进程编程

    在Unix操作系统中,多线程和多进程编程是构建高效并发程序的重要手段。本文将深入探讨这两个主题,以及它们在Unix环境下的同步技术。 一、多线程编程 1. 线程定义:线程是程序执行的最小单位,共享同一进程的内存...

Global site tag (gtag.js) - Google Analytics