• Linux线程模型浅析


    转自: https://nanxiao.me/linux-thread-model-analysis/

     

    Linux线程模型浅析

    Linux的线程是“轻量级进程”(Light-Weight Process,即LWP)。在Linux系统上运行一个程序时,操作系统会为这个程序创建一个进程,其实也就是“主线程”,后续则可以产生出更多的线程。每个进程都有一个PIDProcess ID),每个线程也会有一个TIDThread ID),属于同一进程的线程各自有拥有不同的TID,但它们的PID是相同的,都等于“主线程”的TID。因此从本质上来讲,Linux系统下的进程和线程没有区别,只不过同一进程中的线程可以共享某些资源。下面看一个例子:

    #include <unistd.h>
    #include <omp.h>
    
    int main(void){
    
            #pragma omp parallel num_threads(4)
            for(;;)
            {
                sleep(1);
            }
    
            return 0;
    }
    

    编译并在后台运行这个程序:

    $ gcc -fopenmp threads.c
    $ ./a.out &
    [1] 9802
    

    进程的PID9802,用ps -T pid命令查看进程的线程信息:

    $ ps -T 9802
      PID  SPID TTY      STAT   TIME COMMAND
     9802  9802 pts/1    Sl     0:00 ./a.out
     9802  9803 pts/1    Sl     0:00 ./a.out
     9802  9804 pts/1    Sl     0:00 ./a.out
     9802  9805 pts/1    Sl     0:00 ./a.out
    

    其中SPID即为TID。可以看到当前进程的PID9802,共包含4个线程,其TID依次为:9802980398049805,其中PIDSPID相同的线程即为主线程。

  • 相关阅读:
    Django 之 CBV & FBV
    如何在Pycharm设置ES6语法环境
    RabbitMQ_消息队列基本使用_2
    RabbitMQ_消息队列基本使用_1
    HTML 之 Table 表格详解
    Datetime 模块求日期差
    vue实例属性之methods和computed
    性格测试
    vue中的组件
    vue中的表单
  • 原文地址:https://www.cnblogs.com/acSzz/p/13517399.html
Copyright © 2020-2023  润新知