首页 > 解决方案 > 在什么情况下操作系统会知道 Python 创建的线程?

问题描述

我的理解是,一般而言,操作系统内核(例如 Linux)并没有真正了解在用户空间中创建的任何线程。此外,我相信在 Linux 中,操作系统内核只能看到“任务”或进程,而不是“线程”本身。

此外,我不确定 CPython 是否真的会为任何事情使用多个线程,除非明确使用threadingPython 中的包C 标准 Python 库之一选择自己创建线程。我想这里的例外是multiprocessing或任何 Python 库也可能产生多个进程,在这种情况下,操作系统内核将它们视为独立的。

在什么情况下操作系统内核会知道 Python 脚本创建的任何线程,包括它可能使用的任何模块?

标签: pythonmultithreadingkernelcpythongil

解决方案


在 Linux 中:

任务是一个线程进程是一个具有一个或多个线程的地址空间。

用户空间线程直接在内核中表示。有用于创建线程的 POSIX API pthread_create,还有称为 NPTL 的线程 API 的 Linux 实现,它将一个用户级线程映射到内核级任务 ( task_struct)。

CPython multithreading模块使用pthread_create.


推荐阅读