Поток (Thread)
Наименьшая единица выполнения внутри процесса, имеющая свой стек, но общую память.
A thread is a component of a process. Multiple threads can exist within the same process, sharing resources such as memory, while executing independently. Threads are 'lightweight' because context switching between them is faster than between processes since it doesn't require switching the memory context.
graph LR
Center["Поток (Thread)"]:::main
Rel_assembly_language["assembly-language"]:::related -.-> Center
click Rel_assembly_language "/terms/assembly-language"
Rel_cpu_cache["cpu-cache"]:::related -.-> Center
click Rel_cpu_cache "/terms/cpu-cache"
classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
linkStyle default stroke:#4b5563,stroke-width:2px;
🧠 Проверка знаний
🧒 Простыми словами
Если процесс — это кухня ресторана, то потоки — это повара. Они находятся в одной комнате, используют общие продукты и плиты, но каждый готовит свое блюдо одновременно с другими.
🤓 Expert Deep Dive
Важным аспектом является Thread Local Storage (TLS) для данных, уникальных для потока. В Linux потоки часто реализуются как LWP (Lightweight Processes). В Python (CPython) существует Global Interpreter Lock (GIL), который не позволяет выполнять байт-код более чем одному потоку одновременно на одном ядре.