zoukankan      html  css  js  c++  java
  • 线程

    定义

    是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。

    特征

    轻型实体

    线程中的实体基本上不拥有系统资源,只是有一点必不可少的、能保证独立运行的资源。

    独立调度和独立运行的基本单位

    在多线程OS中,线程是能独立运行的基本单位,因而也是独立调度和分派的基本单位。由于线程很“轻”,故线程的切换非常迅速且开销小(在同一进程中的)。

    可并发执行

    在一个进程中的多个线程之间,可以并发执行,甚至允许在一个进程中所有线程都能并发执行;同样,不同进程中的线程也能并发执行

    共享进程资源

    在同一进程中的各个线程,都可以共享该进程所拥有的资源

    为何要有线程

    60年代,在OS中能拥有资源和独立运行的基本单位是进程,然而随着计算机技术的发展,进程出现了很多弊端,一是由于进程是资源拥有者,创建、撤消与切换存在较大的时空开销,因此需要引入轻型进程;二是由于对称多处理机(SMP)出现,可以满足多个运行单位,而多个进程并行开销过大。

    线程比进程好在哪

    线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统内多个程序间并发执行的程度,从而显著提高系统资源的利用率和吞吐量。因而近年来推出的通用操作系统都引入了线程,以便进一步提高系统的并发性,并把它视为现代操作系统的一个重要指标。

     

    多线程

    定义

    多线程就是指一个进程中同时有多个线程正在执行

    为什么要使用多线程

    • 在一个程序中,有很多的操作是非常耗时的,如数据库读写操作,IO操作等,如果使用单线程,那么程序就必须等待这些操作执行完成之后才能执行其他操作。使用多线程,可以在将耗时任务放在后台继续执行的同时,同时执行其他操作。
    • 可以提高程序的效率。

    缺点

    • 使用太多线程,是很耗系统资源,因为线程需要开辟内存。更多线程需要更多内存。
    • 影响系统性能,因为操作系统需要在线程之间来回切换。
    • 需要考虑线程操作对程序的影响,如线程挂起,中止等操作对程序的影响。

    注意

    多线程是异步的,但这不代表多线程真的是几个线程是在同时进行,实际上是系统不断地在各个线程之间来回的切换(因为系统切换的速度非常的快,所以给我们在同时运行的错觉)。

    同一进程中线程的关系

    • 在同一进程中的各个线程,都可以共享该进程所拥有的资源,这首先表现在:所有线程都具有相同的地址空间(进程的地址空间),这意味着,线程可以访问该地址空间的每一个虚地址;此外,还可以访问进程所拥有的已打开文件、定时器、信号量机构等。
    • 同一个进程内的线程之间互相通信不必调用内核,因为同一个进程内的线程共享文件和内存,
    • 同一进程中的多个线程有各自的调用栈(call stack),自己的寄存器环境(register context),自己的线程本地存储(thread-local storage)

    详细解释

    https://baike.baidu.com/item/%E7%BA%BF%E7%A8%8B/103101?fr=aladdin

     

     
     
  • 相关阅读:
    [HDOJ4417]Super Mario(归并树)
    [POJ2104] K-th Number(归并树,二分)
    2017北理校赛G题 人民的名义(FFT)
    [CF762C] Two Strings(预处理,二分答案)
    [CF798D] Mike and distribution(贪心,鸽笼原理,随机)
    [CF798C] Mike and gcd problem(规律,gcd)
    2017北理校赛H题 青蛙过河(线段树, dp, 离散化)
    [CF798B] Mike and strings(暴力)
    [CF798A] Mike and palindrome(水题,trick)
    [CCPC2017]湘潭邀请赛
  • 原文地址:https://www.cnblogs.com/suihang/p/12736457.html
Copyright © 2011-2022 走看看