zoukankan      html  css  js  c++  java
  • Linux中的线程

    • 线程负责执行二进制指令,进程除了执行指令之外,内存、文件系统等等都要其来管理。

    • 使用进程实现并行执行的问题有两个:第一,创建进程占用资源太多;第二,进程之间的通信需要数据在不同的内存空间传来传去,无法共享。
    • 创建和运行一个普通线程:声明线程函数->>声明线程对象->>设置线程属性->>创建线程->>销毁线程属性->>等待线程结束->>主线程结束。

    • 线程访问的数据分成三类:第一类是线程栈上的本地数据,比如函数执行过程中的局部变量,每个线程都有自己的栈空间,为了避免线程之间的栈空间踩踏,线程栈之间会有小块区域,用来隔离保护各自的栈空间;第二类数据就是在整个进程里共享的全局数据,例如全局变量,虽然在不同进程中是隔离的,但是在一个进程中是共享的;第三类数据就是线程私有数据。

    • 共享的数据保护方式:Mutex(Mutual Exclusion,互斥),它的模式是在共享数据访问时,申请加把锁,谁先拿到锁,谁就拿到访问权限,其他的排队等候直到上一次的锁使用结束并释放。互斥锁需要和条件变量配合使用。
  • 相关阅读:
    LeetCode_637.二叉树的层平均值
    LeetCode_627.变更性别
    LeetCode_617.合并二叉树
    LeetCode_595.大的国家
    LeetCode_590.N叉树的后序遍历
    LeetCode_589.N叉树的前序遍历
    LeetCode_58.最后一个单词的长度
    LeetCode_566.重塑矩阵
    LeetCode_561.数组拆分 I
    LeetCode_56.合并区间
  • 原文地址:https://www.cnblogs.com/kongzimengzixiaozhuzi/p/13283974.html
Copyright © 2011-2022 走看看