zoukankan      html  css  js  c++  java
  • 《Go并发编程实战》系列二:多线程编程

    Go并发编程模型在低层是由操作系统所提供的线程库支撑的。

    线程

    线程可视为进程中的控制流,一个进程至少会包含一个线程。一个进程可以包含多个线程。拥有多个线程的进程可以并发执行多个任务,并且及时某个或某些任务被阻塞,也不会影响其他任务正常执行。
    一个进程中的所有线程都拥有自己的线程栈,并以此存放自己的私有数据。这些线程的线程栈都包含在其所属进程的虚拟内存地址中。一个进程的很多资源都会被其中的所有线程共享,被共享的资源包括在当前进程的虚拟内存地址中存储的代码段、数据段、堆、信号处理函数,以及当前进程所持的文件描述符,等等。

    线程的标识

    每个线程也都有属于自己的ID,这类ID也称为线程ID或者TID,线程ID只在其所属进程的范围内唯一。
    线程ID是有操作系统内核分配和维护的。

    线程的控制

    与进程不同的是同一个进程中的任意两个线程之间的关系都是平等的,之间并不存在层级关系。任何线程都可以对统一进程中的其他线程进行有限的管理。
    主要包括以下四种:

    1. 创建线程
    2. 终止线程
    3. 连接已终止的线程
    4. 分离线程
      线程也可对自身进行两种控制:终止(return)和分离(pthread_detach)

    线程的状态

    线程在从创建到终止的完整生命周期中也经常会在多个状态之间切换。(就绪状态->运行状态->睡眠状态,僵尸状态,终止状态)

  • 相关阅读:
    nginx解决Ajax跨域问题
    传入token值到下个操作
    获取token值并写入Excel文件中
    读取配置文件.ini
    js判断页面元素是否存在
    SQL Server数据库管理常用的SQL和TSQL语句
    常用聊天工具(IM)在线客服链接代码
    [转]最大概率选择到“最好女孩”的算法
    Web开发:设置复选框的只读效果
    Web开发常用边框颜色汇总
  • 原文地址:https://www.cnblogs.com/lvpengbo/p/15546697.html
Copyright © 2011-2022 走看看