@dlangru

Страница 453 из 719
Evgeny
13.03.2018
10:20:56
потому что в линупсе процесс практически как поток

но накой мне две разновидности потока?

Dark
13.03.2018
10:21:19
хз, как стопнуть все потоки папаши
Мьютексы всякие есть же

Denis
13.03.2018
10:21:37
но накой мне две разновидности потока?
потому что "практически" != одно и то же

Google
Evgeny
13.03.2018
10:21:48
Мьютексы всякие есть же
о да, мне еще городить кучу мутексов, ради сраного спавна дочернего процесса

Denis
13.03.2018
10:21:55
кое-кто привык к переменным в TLS смотрю)

Pavel
13.03.2018
10:22:26
потому что в линупсе процесс практически как поток
Ну не практически, там все же различия в механизмах форка и переключения контекста, что важно

Evgeny
13.03.2018
10:22:58
А как ты тогда пишешь все в одну кучу?
я использую мьютексы, но я не хочу городить систему мьютексов и управления ими ради простейшей операции.

Igor
13.03.2018
10:22:59
“никогда не пробовал делать это вручную, но возможно так: создаём пайп, vfork, в нём dup2 так что-бы stdout потомка показывал на пайп и затем exec” - не оно?

Evgeny
13.03.2018
10:23:52
“никогда не пробовал делать это вручную, но возможно так: создаём пайп, vfork, в нём dup2 так что-бы stdout потомка показывал на пайп и затем exec” - не оно?
я тоже не пробовал так делать, в итоге забил на спавн, вместо этого подгрузил библиотечку и через нее выполнил нужные мне операции

вот это было грубо

Dark
13.03.2018
10:24:27
Ну бесит меня сваливание всех проблем на линукс

Evgeny
13.03.2018
10:25:07
Ну бесит меня сваливание всех проблем на линукс
Где ты тут увидел сваливание всех проблем на линукс? Это у тебя в голове сваливание хз чего на хз чего.

Dark
13.03.2018
10:26:33
Ладно, пойду за жостким азотом пукан тушить

Google
Dark
13.03.2018
10:26:36
:C

Кстати, раз уже речь зашла о спавне процессов, в винде там тоже были проблемы

При спавне и быстром убивании процессов система начинала работать очень медленно

Pavel
13.03.2018
10:30:24
я использую мьютексы, но я не хочу городить систему мьютексов и управления ими ради простейшей операции.
Хороший ответ в том что твой случай с интенсивно пишущим родительским процессом это редкий кейс и не является простейшим случаем. Для большинства задач форк это простой и малозатратный способ запустить программу. А если уже хочется делать это в экстремальных условиях на скорости 100500 терабайт в секунду, то будь добр заморачивайся. Порождай этот интенсивно пишуший процесс через еще более родительский и все екзеки пускай через него, ну или мьютексы.

Ведь у всех highload процессов обычно есть простейший master-process который и форкает воркеры.

Evgeny
13.03.2018
10:32:28
да он не особо high-load просто интенсивно в память писал

Pavel
13.03.2018
10:32:51
Уже некоторый подвид хайлоада )

Evgeny
13.03.2018
10:33:09
короче проще оказалось либку нужную найти и задействовать, чем менять полархитектуры ради такого говна

Pavel
13.03.2018
10:34:01
Если бы порождение процесса было не форком а легкой операцией то наверняка надо было бы кучу технических опций указать и проблем решить как в винде.

Evgeny
13.03.2018
10:34:25
ну дык нужен и форк и спавн, ктож спорит, что форк полезен

Dark
13.03.2018
10:34:49
Ну так тебя корежет от форка вообще

Evgeny
13.03.2018
10:34:57
возможно, что есть способ о котором я просто не знаю, но нервы оно мне попортило

Ну так тебя корежет от форка вообще
это у тебя в голове что-то корежит

Dark
13.03.2018
10:35:55
Я так и не понял, почему ты считаешь, что форк - это не техническое упрощение?

Твоя же ситуация сложилась из-за того, что форк это именно упрощение

Pavel
13.03.2018
10:45:48
Unreal на вайне пошел?)

Dark
13.03.2018
10:46:17
У меня на вайне вообще ничего не идет

(Пожимаю плечами)

Pavel
13.03.2018
10:46:39
Ну вот

Igor
13.03.2018
10:47:00
у меня тоже есть петензия к линуху кстати, к epoll в частности. всё что я могу получить о событии это тип события и файловый дескриптор. в то время как в kqueue я могу получить еще и заданный мной void*, что сильно упрощает жизнь

Google
Dark
13.03.2018
10:47:59
А у кого нибудь тут есть претензии к винде?)

Igor
13.03.2018
10:48:21
к винде я притрагиваться даже не хочу, поэтому у меня - нету

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

Evgeny
13.03.2018
10:58:04
Твоя же ситуация сложилась из-за того, что форк это именно упрощение
мне не понравилось объединение форка и спавна, все.

Dark
13.03.2018
10:59:05
ЕМНИП, нет.

Evgeny
13.03.2018
11:53:47
ЕМНИП, нет.
это я про "Под капотом у винапи вполне может быть тот же форк" ЕМНИП = если мне не изменяет память

Dark
13.03.2018
12:00:24
Не, ты про конструктивное упрощение это

Pavel
13.03.2018
12:01:10
да немыслимо это упростить, этож все надо переделывать. Никто не будет этим заниматься.

Dark
13.03.2018
12:05:16
Я про то, что это уже упрощеная схема

Дальше упрощать...

Dark
13.03.2018
12:05:38
А насчет переписывания ОС - вопрос особый

Даже если кто-то собирется переписывать, все он точно не учтет

В результате может выйти хуже

Evgeny
13.03.2018
12:31:06
Не, ты про конструктивное упрощение это
не, я про винапи это Как ты себе представляешь фразу "если мне не изменяет память, это не конструктивное упрощение" - чушь же собачья. Или ты меня за дебила держишь?

Dark
13.03.2018
12:32:16
Не держу

Pavel
13.03.2018
12:32:46
яннп, что упрощение чего

Dark
13.03.2018
12:33:10
Я опять походу все напутал

)

Google
Evgeny
13.03.2018
12:33:16
Не держу
так вот докладываю, полный вариант: ЕМНИП, в винапи спавн процессов НЕ через форк. === ЕМНИП, нет.

Dark
13.03.2018
12:33:45
Ну они свои сисколлы скрывают, так что хз

Evgeny
13.03.2018
12:34:04
Скрывают, и я могу путать, поэтому добавил ЕМНИП

Лично для меня странно, что перед exec нужно делать форк. Зачем?

Dark
13.03.2018
12:35:04
Потому, что exec заменяет память процесса

Низкоуровневая техническая фича, так сказать

Evgeny
13.03.2018
12:35:32
Потому, что exec заменяет память процесса
А какой смысл сначала клонировать, а потом удалять клонированное?

Dark
13.03.2018
12:35:56
Предполагается, что cow не допустит клонирование

Admin
ERROR: S client not available

Pavel
13.03.2018
12:35:59
Смысл в том что весь контекст и опции просто копируются с родителя, вместо того чтобы настраиваться с нуля

Evgeny
13.03.2018
12:36:32
Предполагается, что cow не допустит клонирование
Все равно там оверхед идет на создание "каталога" страниц и настраивания их на COW

Dark
13.03.2018
12:36:53
Вот тут хз

Evgeny
13.03.2018
12:37:03
Dark
13.03.2018
12:37:09
Может и в самом деле не правильно спроектировали

Pavel
13.03.2018
12:37:11
Нужны

Иначе процесс запускался бы вообще в ваккуме, непонятно от кого

Evgeny
13.03.2018
12:37:43
Представьте, что в языке D вместо созданиня новой структуры вас заставляют копировать старую, а потом на ее место уже записывать новую.

Pavel
13.03.2018
12:38:18
Представье что в языке D вместо копирования структуры вас заставляют создать новую пустую а потом поприсваивать ей каждое поле старой.

И работать уже с новой получившейся структурой

Dark
13.03.2018
12:41:18
Но тут есть ньюанс

Google
Dark
13.03.2018
12:41:38
Мы не можем создать процесс без лишней сущности

В данном случае - памяти

Evgeny
13.03.2018
12:41:55
Представье что в языке D вместо копирования структуры вас заставляют создать новую пустую а потом поприсваивать ей каждое поле старой.
мне не нужно копировать структуру, мне нужно создать совершенно новую, другого типа, никак со старой не связанную. Если мне нужно копировать я возьму форк и не буду париться

Dark
13.03.2018
12:42:13
Хотя

Я кажется понял логику

Evgeny
13.03.2018
12:43:12
вроде как clone умеет копировать только то что нужно вплоть до вообще ничего.

Dark
13.03.2018
12:43:38
Нее

Тут такая логика

Pavel
13.03.2018
12:43:45
Ладно а чего спорить в теме в которой мы не очень глубоко шарим, когда тут объяснено https://unix.stackexchange.com/questions/136637/why-do-we-need-to-fork-to-create-new-processes

Dark
13.03.2018
12:44:02
ОС не знает, какая память не нужна будет процессу

Evgeny
13.03.2018
12:44:03
Полагаю, это исторически так сложилось

Dark
13.03.2018
12:44:28
А среди памяти процесса - стэк, само приложение

Evgeny
13.03.2018
12:44:35
ОС не знает, какая память не нужна будет процессу
да никакая, ему нужна новая память

Dark
13.03.2018
12:44:45
А что там выполнять будем?

Памяти нет

Приложения в памяти нет

Поэтому, если мы вызываем clone

Мы обязаны склонировать память

Dark
13.03.2018
12:46:52

Страница 453 из 719