TGViewer
Грокаем C++ Грокаем C++ @grokaemcpp · 9.36K subscribers
Post #1097 3.06K
​​Потоки и линукс
#опытным

Описанное вот тут касательно процессов и поток в общем отражает концепцию того, что происходит в ОС, но детали реализации всего этого добра в разных ОС - разные.

И сегодня хочется поговорить об особенностях конкретно линукса.

В Linux нет потоков.

Нет системного вызова thread_create().

Никогда не было.

Когда вы вызываете pthread_create или конструктор std::thread, Linux не создаёт «поток». Он создаёт задачу.

Такую же задачу, как когда вызывается сискол fork. Отличие только в разделяемых ресурсах.

И ядро оперирует только этими задачами. Оно не разделяет потоки и процессы. Эти понятия описывают разные полюса одного понятия "задача".

Есть сискол, который создает дочернюю задачу - clone. Так вот параметры этого системного вызова и определяют ее дальнейшую судьбу.

Вызов clone без параметров поведенчески эквивалентен вызову fork: вы получаете новый полностью независимый процесс со своим виртуальным пространством, дескрипторами и тд. Но передайте в параметры набор флагов CLONE_VM | CLONE_FILES | CLONE_FS | CLONE_SIGHAND | CLONE_THREAD и получите процесс, который по своей сути POSIX поток, который шарит эти ресурсы со своей родительской задачей. Такие процессы называют легковесные процессы или LWP.

Повторюсь, единственное отличие - различный набор разделяемых ресурсов.

Кто хочет чуть подробнее про все это почитать - вот хорошая статейка. Правда вам будут нужны заветные 3 буквы.

Know the truth. Stay cool.

#OS #concurrency
  • 👍 28
  • ❤ 9
  • 🔥 4
More from @grokaemcpp
  1. Oct 8, 2026​​Strict weak ordering #опытным На первый взгляд, всё выглядит рабочим: мы создаём 40 зака…
  2. Oct 7, 2026​​Где-то баг... #опытным Вот вам код: struct Order { int price; int id; }; int main() { st…
  3. Oct 5, 2026Откуда spurious wakeup на кондваре? #опытным У кондваров есть метод std::condition_variabl…
  4. Oct 1, 2026​​Stacktrace. Tips #опытным Чтобы полноценно работать со стандартными трейсами, нужно знат…
  5. Sep 28, 2026​​Stacktrace #опытным Одна из проблема исключений - непонятно, откуда оно прилетело. Ну да…
  6. Sep 25, 2026​​std::spanstream #опытным Радостная весть для всех, кто пользуется iostreams! В C++23 доб…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →