У меня есть запрос, связанный с реализацией потоков в Linux.
Linux не поддерживает явные потоки. В пользовательском пространстве мы можем использовать библиотеку потоков (например, NPTL) для создания потоков. Теперь, если мы используем NPTL, он поддерживает отображение 1:1.
Ядро будет использовать функцию clone()
для реализации потоков.
Предположим, что я создал 4 потока. Тогда это будет означать, что:
- Будет 4
task_struct
. - Внутри
task_struct
будет предусмотрено разделение ресурсов по аргументам клонирования(CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND)
.
Теперь у меня есть следующий запрос:
- Будет ли 4 потока иметь один и тот же PID? Если кто-то может уточнить, как распределяются PID.
- Как идентифицируются разные потоки; есть ли концепция идентификатора TID (thread ID)?