zoukankan      html  css  js  c++  java
  • 线程基础

    线程基础

    lwp:light weight process

    多进程:编程方便,简化逻辑。

    多线程:简化逻辑;减少开销(创建,切换和调度);通信方便。

    同一进程的多个线程共享同一地址空间,包括代码段,数据段。

    通过man pthreads了解POSIX threads的介绍,与进程间资源共享情况。

    • 多线程共享的资源

    同一地址空间(包括代码段,数据段,自然包括全局变量)。

    进程id和父进程id,进程组id和session ID

    用户id和组id

    文件描述符表

    每种信号处理方式(SIG_IGN, SIG_DFL或自定义信号处理函数)

    当前工作目录

    • 不共享

    线程id(递减)

    上下文,包括各种寄存器的值,程序计数器和栈指针。

    栈空间

    errno变量

    信号屏蔽字

    调度优先级

    注:线程安全函数不一定为可重入函数(线程安全函数可只读全局变量而不写,可重入函数不可访问全局变量)。

    • linux线程实现

    linux实现Posix线程有两种方式:LinuxThreads(旧的,glibc2.4起就不再支持了)和NPTL(Native POSIX Threads Library, glibc 2.3.2, kernel 2.6).

    NPTL创建线程的同时,创建manager线程,负责回收分离状态线程。

    安装manpages-posix-dev可man thread相关函数,ubuntu下安装方法:

    sudo apt-get install manpages-posix-dev

  • 相关阅读:
    数组去重的方法
    ES5-ES8 数组拥有的方法
    常用的git操作命令
    vue中使用vue-echarts
    js的深复制与浅复制
    express 4.x 搭建Node项目框架
    网页布局分类
    shadow---实例
    animate动画解析
    3d------正方体
  • 原文地址:https://www.cnblogs.com/embedded-linux/p/5071548.html
Copyright © 2011-2022 走看看