• 线程基础


    cpu:承担所有计算的任务
    操作系统:是计算机的管理者,它负责任务调度,资源分配和管理,统领整个计算机硬件
    应用程序:是某种功能的程序,程序运行于操作系统上

    进程由: 程序, 数据集合 和 进程控制块 三部分组成
    程序:用于描述进程要完成的功能,是控制进程执行的指令集。
    数据集合:是程序在执行时所需要的数据和工作区
    程序控制块:包含进程的描述信息和控制信息,是进程存在的唯一标识

    每个进程有各自独立的一块内存,使得各个进程之间内存地址相互隔离。

    进程是操作系统分配资源的最小单位,线程是程序执行的最小单位(线程出现的一个原因是进程间切换开销较大)

    各个线程之间共享程序的内存地址(也就是进程所在的内存空间)

    一个标准线程:线程ID,当前指令指针(PC),寄存器和堆栈组成

    进程:内存空间(代码数据,进程空间,打开的文件)和一个或多个线程组成

    进程与线程的资源共享关系

    当线程的数量小于处理器的数量时,线程的并发是真正的并发,不同的线程运行在不同的处理器上,当线程的数量大于处理器的数量时,线程的并发会受到一些阻碍,此时不是真正的并发,因为此时至少有一个处理器会运行多个线程

    频繁等待的线程:称为IO密集型线程

    频繁进行大量计算以至于每次都把所有时间片全部耗尽,很少等待的线程:称为 CPU密集型线程

    在优先级调度环境下,线程优先级的改变有三种方式
    1.用户指定优先级
    2.根据进入等待状态的频发程度提升或降低优先级(由操作系统完成)
    3.长时间得不到执行而提升等级

    要将多个线程对同一数据的访问同步,确保线程安全。

    同步:即指一个线程访问数据时,其他线程不得对同一数据进行访问,即同一时刻只能有一个线程访问该数据

    每一个线程在访问数据或资源之前,首先试图获取对该数据的锁,并在访问结束之后释放对该数据的锁,在锁被占用时试图获取锁,线程会进入等待状态,直到锁被释放数据再次变为可用。

    二元信号量:有占用与非占用两种状态,适合只能被唯一一个线程独占访问的资源

    当二元信号量锁被置为占用状态,之后其他试图获取该二元信号量的线程会进入等待状态,直到该锁被释放

    多元信号量(简称信号量):允许多个线程访问资源,一个初始化值为N的信号量允许N个线程并发访问,线程访问资源时,首先获取信号量锁,进行如下操作:

    1.将信号量值减一

    2.如果信号量值小于0,则进入等待状态,否则继续执行

    访问资源结束后,线程释放信号量锁,进行如下操作:

    1.将信号量的值加1

    2.如果信号量的值大于1,去唤醒一个等待中的线程

    信号量在整个系统中可以被任意线程获取和释放,也就是说,同一个信号量,可以由一个线程获取,而由另一个线程释放,而互斥量则要求哪个线程获取了该互斥量锁就由哪个线程释放

    临界区:是一种比互斥量更加严格的手段,互斥量和信号量在系统的任何进程都是可见的,也就是说一个进程创建了互斥量和信号量,另一个进程试图获取该锁是合法的,而临界区的作用范围仅限于本进程,其他进程无法获取该锁。

    读写锁:允许多个线程同时对同一个数据进行读操作,而只允许一个线程进行写操作

    有两种获取方式:共享的和独占的(Exclusive)

    锁处于共享,其他线程以共享方式获取该锁仍能成功,此时该锁分配给了多个线程

    处于独占状态的锁阻止任何线程获取该锁,不论它们以何种形式

    读写锁的状态	  以共享方式获取	   以独占方式获取
    
        自由	                          成功	                  成功
    
        共享	                          成功	                  等待
    
        独占                           等待                    	  等待
    

    引自:https://blog.csdn.net/luoweifu/article/details/46701167

  • 相关阅读:
    YOLO2 (2) 测试自己的数据
    Ubuntu 14.04服务器配置 (1) 安装和配置
    window10+linux双系统安装
    机械纪元 尼奥
    如何标数据
    usb-cam (3)摄像机标定文件-ORB-SLAM标定文件
    ORB-SLAM2(3) ROS下实时跑ORB_SLAM2
    usb-cam(1)安装
    usb-cam (2)摄像机标定
    Linux下的压缩zip,解压缩unzip命令详解及实例
  • 原文地址:https://www.cnblogs.com/ymd12103410/p/9640478.html
Copyright © 2020-2023  润新知