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

     

     
     
  • 相关阅读:
    LOJ 2550 「JSOI2018」机器人——找规律+DP
    LOJ 2548 「JSOI2018」绝地反击 ——二分图匹配+网络流手动退流
    2019.4.24 一题(CF 809E)——推式子+虚树
    LOJ 2551 「JSOI2018」列队——主席树+二分
    bzoj 2632 [ neerc 2011 ] Gcd guessing game —— 贪心
    bzoj 1927 星际竞速 —— 最小费用最大流
    bzoj 2535 & bzoj 2109 航空管制 —— 贪心+拓扑序
    bzoj 3671 随机数生成器 —— 暴力
    bzoj 2395 Timeismoney —— 最小乘积生成树
    bzoj 3157 & bzoj 3516 国王奇遇记 —— 推式子
  • 原文地址:https://www.cnblogs.com/suihang/p/12736457.html
Copyright © 2011-2022 走看看