9.1 构建线程状态

thread state 类型概述

需要先将帧(frame)绑定到一个线程上,它才能够被执行。CPython 可以在单个解释器中同时运行多个线程,而**解释器状态(interpreter state)**保存了由这些线程状态组成的链表。

CPython 至少包含一个线程,每个线程都有它自己的状态。

参见

关于线程更加细节的知识将在“并行和并发”这一章详细阐述。

线程状态类型

线程状态类型(PyThreadState)包含了 30 多个属性,主要包括:

  • 线程的唯一标识符;

  • 指向其他线程状态的链表;

  • 该线程状态由哪一个解释器状态生成;

  • 当前正在执行的帧;

  • 当前递归的深度;

  • 可选的追踪函数;

  • 当前正在处理的异常;

  • 当前正在处理的任意异步异常;

  • 产生多个异常时抛出的异常栈(例如在 except 代码块中触发的异常);

  • GIL 计数器;

  • 异步生成器计数器。

相关的源文件

与线程状态相关的源文件分布在多个文件中:

文件用途

Python/thread.c

线程的 API 的实现

Include/threadstate.h

一些线程状态的 API 及类型定义

Include/pystate.h

解释器状态的 API 及类型定义

Include/pythread.h

线程的 API 定义

Include/cpython/pystate.h

一些线程和解释器状态的 API

Last updated