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

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

    线程

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

    线程的标识

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

    线程的控制

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

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

    线程的状态

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

  • 相关阅读:
    SqlServer禁用启用触发器、外键约束
    解决Windows Server2008R2中导入Excel不能使用Jet 4.0
    C#读写配置文件
    C#后台如何获取客户端访问系统型号
    Flex在Win10,Chrome浏览器上汉字乱码的问题
    flex lineChart 显示所有的数据节点
    HTTP状态码大全
    zabbix使用sendEmail发送邮件报警
    zabbix安装
    Samba服务器搭建配置
  • 原文地址:https://www.cnblogs.com/lvpengbo/p/15546697.html
Copyright © 2011-2022 走看看