170 похожих чатов

Я правильно понимаю, что процессы создаются вызовом fork, а треды

- облегченные процессы - вызовом clone (под капотом каких-нибудь posix-threads или аналогов, если есть)?

44 ответов

18 просмотров

нет, треды ни в каком смысле не являются облегченными процессами

И процессы и thread-в используют системный вызов clone, но с разными флагами

1. Это не относится к C++ 2. в Windows нет никакого fork :)

Илья Грошев
А чем тогда?

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

Илья-Грошев Автор вопроса
Boris Usievich
1. Это не относится к C++ 2. в Windows нет никаког...

По моему программирование на любом языке в том или ином виде подразумевает взаимодействие с ядром И я имел ввиду линукс

Илья-Грошев Автор вопроса
Илья-Грошев Автор вопроса
Гражданин Котейко
с каким ядром? я на микроконтроллере один!

Еххпе ну там же сейчас тоже часто операциогнки стоят наверное) Не знаю)

Alexander Pshenichnikov
Это про win?

я написал достаточно общие слова, чтобы по идее и к линуксам, и к бсд относилось (в голове при написании был линукс)

ок, а код самого ядра по-вашему из астрального плана является и его никто не программирует?

Илья-Грошев Автор вопроса
Гражданин Котейко
ок, а код самого ядра по-вашему из астрального пла...

Ну это вы же докопались Большинство людей все таки не ядра программируют Но я вас понял)

Илья Грошев
Ну это вы же докопались Большинство людей все таки...

ну тут можно пойти не в низы, а в верхи ещё, когда ядро есть, но оно там где-то далеко внизу или вообще за забором песочницы

Ivan Sokolov
я написал достаточно общие слова, чтобы по идее и ...

Написали, как всегда грамотно. Просто тогда уточню, что исторически Linux не всегда поддерживал posix thread-ы, только процессы. В итоге thread-ы были реализованы на базе процессов. В Windows, насколько знаю, сразу плясали от модели, где потоки - это единица, с которой работает планировщик, а процесс - контейнер потоков.

Ни "тредов" ни "процессов" нет. Это все абстракции. Есть только поток исполнения процессора, который, к слову, никогда не останавливается. И область виртуальной памяти внутри которой все живёт.

Не совсем правильно Дело в том что Fork- это вызов специфичный для одной или нескольких операционных систем в общем Как создаются процесс с точки зрения языка c++ не определено

Int Unsigned
Ни "тредов" ни "процессов" нет. Это все абстракции...

Вот это была хорошая попытка но неудачная Дело в том что потоки есть в рамках языка c++, есть стандартный API для их инициализации и последующей работе с ними, Ну есть Может быть не формализованная в рамках языка Но Определение потока, а если есть определение потока, то есть и определение процесса как его антагониста, Хотя общего API для создания процесса у нас в c++ пока нет

Бррр... Моё определение, а скорее видение этих сущностей более прозрачное и правильное. Всегда был против попыток оторвать с++ от железа. С++ - это язык в конечном итоге работающий на железе. Программируя на с++ нужно всегда хотя бы немного себе представлять что получится из 2+2 и из std::thread.

Dmitriy [Отпуск]
К слову, последнее весьма неочевидно ;)

Философия Для первого тоже можно придумать заковыристую архитектуру, что тоже будет не очевидно. Здесь молодежь просто вопросами мается ни разу проц (сиську) руками не щупав. Им путь правильный задать надо. Правильный путь в плюсах - это понимать железо. Плюсы - не абстракция типа жабы. Они на конкретном проце работают. Всегда.

https://habr.com/ru/companies/selectel/articles/525542/

Iam
https://habr.com/ru/companies/selectel/articles/52...

о, это я умею volatile size_t i = 42; while (i++) {}

Илья-Грошев Автор вопроса
Int Unsigned
Ни "тредов" ни "процессов" нет. Это все абстракции...

А что такое тогда для вас технология multithreading? Логические ядра так называемые Я думаю, процессоры развиваются в соответствии с "потребностями" операционок, и уже нельзя так однозначно утверждать, что тредов в процессорах прям таки вообще нет Не такая уж это абстракция, треды

Int Unsigned
Ни "тредов" ни "процессов" нет. Это все абстракции...

* многоядерный процессор смотрит с недоумением *

Int Unsigned
Философия Для первого тоже можно придумать заковы...

Не не не, вовсе не факт. А всё поведение с железом в рамках с++ скорее всего сводится к вариантам UB

Илья Грошев
А что такое тогда для вас технология multithreadin...

Ну это некоторая концепция, которую накрутили поверх процессоров, но про которую формально процессор ничего не знает

Iam
https://habr.com/ru/companies/selectel/articles/52...

Ох... Весьма поверхностно :)

Ilya Zviagin
Вот это была хорошая попытка но неудачная Дело в т...

Там гугл диктант подглючил, я имел в виду что определение потока в рамках языка есть, а процесса - нет, и API нет для процессов

Dmitriy [Отпуск]
Ох... Весьма поверхностно :)

https://uefi.org/htmlspecs/ACPI_Spec_6_4_html/16_Waking_and_Sleeping/sleeping-states.html

Ilya Zviagin
Не не не, вовсе не факт. А всё поведение с желез...

Я Вас прекрасно понимаю. В первом классе школы, когда дети изучают таблицу умножения, нужно ли упомянуть о Гильбертовых пространствах и интегрированию по Лебегу? Некоторые преподаватели для простоты просто отметают эту "ересь". Я с таким подходом не согласен. Нужно это все упомянуть. И таблице умножения учить надо и перспективы раскрывать тоже.

Dmitriy [Отпуск]
Ох... Весьма поверхностно :)

Всегда есть уровень ниже. Под логикой физика твердого тела и т.д. )

Int Unsigned
Я Вас прекрасно понимаю. В первом классе школы, ко...

интегралы по лебегу надо рассказать тогда, когда чел их сможет осознать

Int Unsigned
Я Вас прекрасно понимаю. В первом классе школы, ко...

Зря, это - единственно правильный подход.

Ilya Zviagin
Зря, это - единственно правильный подход.

У меня есть заочка по практической психологии. Исходя из этих компетенций могу говорить что.. Способности к абстрактному мышлению проявляются у человеческого существа в период от 22-х до 45-лет. У всех по разному. Очень и очень редко раньше и очень и очень редко позже. Многие просто живут, едят и срут не проявляя никакой способности. Искры божьей нет. Но! В отношении тех у кого эта божья искра есть можно воздействовать, чтобы она проявилась раньше! Мы все дети своей генетики от родителей, но и воспитания от воздействия своего окружения. Поэтому, если бить, пинать, объяснять, и всячески заставлять думать, - умных будет больше.

Mikail Bagishov
интегралы по лебегу надо рассказать тогда, когда ч...

Раз речь зашла про интегралы, может кто знает библиотеки для численного расчета производных, интегралов, уже задавал этот вопрос, но никто не смог ответить в группе экспертов, может кто из академической среды сможет подсказать?

Int Unsigned
Философия Для первого тоже можно придумать заковы...

1) в рамках стандартной модели нет никакого железа 2) вы расскажете плохо 3) скорее всего ещё покажете сишный стиль, вместо адекватного

Int Unsigned
Я Вас прекрасно понимаю. В первом классе школы, ко...

Нужно упомянуть вещи, которые напрямую не влияют на написание кода, а являются бесполезной информацией. Во время обучения нужно показывать полезные вещи: ну банально рассказать про кеши и тот факт, что если ты хранить std::vector<Data> - это кеш дружелюбно, если std::vector<unique_ptr<Data>>, то это уже одна индерекция, что больно, если std::vector<std::variant<Data1, Data2>>, то опять кеш дружелюбно, но есть другие затраты на

Похожие вопросы

Обсуждают сегодня

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Коллеги, я тут для личных нужд пошел ставить MQTT сервер, пощупал mosquitto, но ужаснулся отсутствию такой банальности, как HTTP API для посмотреть список топиков. А тут что,...
Maksim Lapshin
13
#include <stdio.h> #include <stdlib.h> #include <time.h> void mass_first_generate(int mass[5][7]) {     for (int N = 0; N < 5; N++) {         for (int A = 0; A < 7; A++) {   ...
Чувак
6
Всем привет! Решаю 99 OCaml Problems и столкнулся со следующей проблемой (прошу палками не забивать, я OCaml практически не трогал до этого момента): open OUnit2 let create_...
К|/|pи/\/\ 6е3yглbIи
2
https://www.linkedin.com/posts/ugama-benedicta-kelechi-codergirl-103041300_mobiledevelopment-fluttertraining-handsonlearning-activity-7263445699227254784-IdHB?utm_source=share...
CoderGirl
16
Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
Точно, оно. У тебя там имена потоков выставляются?
Александр (Rouse_) Багель
11
возможно ли как-то передать в электрон или таури медиа поток с рендера 2д движка? двиг запускается как dll, а дальше надо как-то отправлять рендер кодировать не подходит, зр...
Kyle Nekto
7
Помогите пожалуйста. Делаю систему плагинов. Проблема сейчас в такая: плагины загружаются в основном потоке. FLibHandle := SafeLoadLibrary(FFileName) Но нужно еще выполнить фу...
Илья 🤣
10
объясните пожалуйста, почему функция не работает должным образом? вроде должно брать активное окно сравнивать его размер с размером экрана, и если есть совпадение = true прове...
JF
12
Карта сайта