zoukankan      html  css  js  c++  java
  • 线程

    线程

    线程相关概念:
      查看指定线程的LWP号
        线程号和线程ID有区别; 用户查看线程ID, 内核查看线程号
        找到程序的进程ID, 然后执行ps -Lf pid
      创建线程之后, 地址空间没有变化; 进程退出成线程--主线程; 创建出的子线程和主线程共用地址空间; 主线程和子线程有各自独立的pcb, 子线程的pcb是从主线程拷贝而来
      子线程不能使用exit退出
      在linux下: 线程就是进程--轻量级进程, 对于内核来说, 线程就是进程

    .txt, .bss, 堆, 栈, 动态库加载区, 环境变量, 命令行参数
    主线程和子线程共享: .txt, .bss, .data, 堆, 动态库加载区, 环境变量, 命令行参数
    非共享: 栈, 一共有5个线程, 栈区被平均分成5份
    通信: 全局变量, 堆

    线程共享资源: (1) 文件描述符表; (2) 每种信号的处理方式; (3) 当前工作目录; (4) 用户ID和组ID; (5)内存地址空间(.text/.data/.bss/heap/共享库)

    线程非共享资源: (1) 线程ID; (2) 处理器现场和栈指针(内核栈); (3) 独立的栈空间(用户空间栈); (4) errno变量; (5) 信号屏蔽字; (6) 调度优先级

    线程优缺点:
      优点: (1) 提供程序并发性; (2) 开销小; (3) 数据通信和共享数据方便
      缺点: (1) 库函数不稳定; (2) 调试和编写困难, gdb不支持; (3) 对信号支持不好
      有点相对突出, 缺点不是硬伤. linux下由于实现方法导致进程和线程差别不是很大

    多线程和多进程区别:
      进程始终共享: 代码, 文件描述符, 内存映射区
      线程始终共享: 堆, 全局变量-->节省资源

  • 相关阅读:
    WPF 下两种图片合成或加水印的方式(转载)
    Git reset与checkout的区别
    C# 串口导致电脑蓝屏一个可能的原因
    两个用于win7任务栏显示进度的dll
    批量远程执行shell命令工具
    基于zookeeper的主备切换方法
    代码的演变随记
    svn错误:Can't convert string from 'UTF-8' to native encoding
    not allowed to access to crontab because of pam configuration
    大数据利器
  • 原文地址:https://www.cnblogs.com/hesper/p/10738972.html
Copyright © 2011-2022 走看看