长生栈 长生栈
首页
  • 编程语言

    • C语言
    • C++
    • Java
    • Python
  • 数据结构和算法

    • 全排列算法实现
    • 动态规划算法
  • CMake
  • gitlab 安装和配置
  • docker快速搭建wordpress
  • electron+react开发和部署
  • Electron-创建你的应用程序
  • ImgUI编译环境
  • 搭建图集网站
  • 使用PlantUml画时序图
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Living Team

编程技术分享
首页
  • 编程语言

    • C语言
    • C++
    • Java
    • Python
  • 数据结构和算法

    • 全排列算法实现
    • 动态规划算法
  • CMake
  • gitlab 安装和配置
  • docker快速搭建wordpress
  • electron+react开发和部署
  • Electron-创建你的应用程序
  • ImgUI编译环境
  • 搭建图集网站
  • 使用PlantUml画时序图
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 文件操作

  • Linux进程和线程

    • 进程创建
    • 在进程中启动程序
    • 等待进程结束
    • 线程简介
      • 线程概述
      • 进程 vs 线程
      • 线程的优点
      • 线程的缺点
      • 线程的状态
      • 线程的状态迁移图
      • 多线程程序设计方法
      • 可重入性问题
    • 多线程编程举例
    • 线程同步
    • 线程属性
  • Linux信号

  • 进程间通信

  • Socket

  • C语言
  • Linux进程和线程
DC Wang
2023-02-17
目录

线程简介

# 线程简介

# 线程概述

  • 定义:一个程序中的多个执行路线叫做线程,线程是一个进程内部的控制序列。

  • 所有的进程都至少有一个执行线程(初始线程)。

  • 初始线程随进程的创建而创建,其他线程则需要通过显式的函数调用来创建。

# 进程 vs 线程

  • 当进程执行fork()调用时,将创建该进程的一份完整拷贝,该进程拥有自己的PID和变量,独立调度,执行(几乎)独立于父进程。
  • 新线程拥有自己独立的栈(eg.局部变量),但与创建者共享全局变量、文件描述符、信号句柄、当前目录状态。

# 线程的优点

  • 程序呈现出同时做多件事情的特性(并发性)。

  • 某些(包含输入、计算、输出的)应用程序,非常适合使用多线程。

  • 线程切换的代价比进程切换小的多。

# 线程的缺点

  • 变量共享和时序设计需要非常仔细,很容易出现错误。

  • 调试困难。

  • 在单处理器系统中速度不一定能够提高。

# 线程的状态

  • 就绪态:线程能够运行,正在等待处理机资源。可能刚启动,或被其他线程抢占处理器,或从阻塞态恢复。

  • 阻塞态:线程由于等待某些条件而无法运行,例如IO、加锁互斥量或其他条件。

  • 运行态:正在运行。在多处理机系统中,可能有多个线程处于运行态。

  • 终止态:线程从起始函数返回、或调用pthread_exit()函数、或被取消。

# 线程的状态迁移图

图片1

# 多线程程序设计方法

线程支持:

  • 线程由一套完整的函数库支持,其中绝大部分函数以“pthread_”开头。

  • 为了使用这些库函数,代码中必须定义_REENTRANT宏。

  • 程序中要包含头文件pthread.h。

  • 编译时需要使用-lpthread选项。

# 可重入性问题

  • 线程编程需要使用可重入的代码,即可以被不同线程调用多次而仍然能正常工作的代码。
  • errno被多个线程共享,该变量很容易被不同线程修改,从而引起错误。
  • 代码中的静态变量涉及重入性问题,局部变量是可重入的。
编辑 (opens new window)
#C#Linux#线程
上次更新: 2023/03/31, 22:34:04
等待进程结束
多线程编程举例

← 等待进程结束 多线程编程举例→

最近更新
01
ESP32-网络摄像头方案
06-14
02
ESP32-PWM驱动SG90舵机
06-14
03
ESP32-实时操作系统freertos
06-14
更多文章>
Theme by Vdoing | Copyright © 2019-2025 DC Wang All right reserved | 辽公网安备 21021102001125号 | 吉ICP备20001966号-2
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式