@dlangru

Страница 452 из 719
Evgeny
13.03.2018
06:48:38
ну так-то я и имел в виду именно дисковые операции
а, ну тогда ок, видимо я прохлопал этот момент

в этом плане Windows уделывает линупс по полной. IOCP это очень карашо.

Denis
13.03.2018
06:53:22
и поверх всего этого уже написаны разные libevent чтобы вы не мучались с кроссплатформенностью

Google
Denis
13.03.2018
06:54:00
если я правильно понял о чём вы

Evgeny
13.03.2018
06:55:33
Он так крут?
да, он реально крут

у виндузятины лучшее сетевое API среди всех осей, по моему скромному и не только

Denis
13.03.2018
06:56:25
ну дык они его писали последним, когда уже всё понятно было

Evgeny
13.03.2018
06:57:00
Denis
13.03.2018
06:57:18
)

Evgeny
13.03.2018
06:58:21
а еще меня бесит спавн дочерих процессов через форк. убожество

epoll же?
epoll для дискового I/O достаточно странновато

Denis
13.03.2018
07:00:12
кстати, а в линуксе можно получать информацию об изменениях на поддереве ФС?

всех подряд, например

"такой-то файл изменился"

Evgeny
13.03.2018
07:01:54
https://ru.wikipedia.org/wiki/Inotify

Google
Denis
13.03.2018
07:02:33
о, думал оно такого не умеет

спасибо

теперь идея:

https://www.linux.org.ru/news/opensource/14064103 повторить вот это но с поддержкой inotify

Evgeny
13.03.2018
07:04:44
кстати а линупсе AIO эмулируется в glibc

Dark
13.03.2018
09:36:18
а еще меня бесит спавн дочерих процессов через форк. убожество
Конструктивное упрощение схемы, всего лишь. Под капотом у винапи вполне может быть тот же форк

Denis
13.03.2018
09:41:35
а еще меня бесит спавн дочерих процессов через форк. убожество
наоборот же. ты под винду пишешь обычно, наверно?

Evgeny
13.03.2018
09:42:23
наоборот же. ты под винду пишешь обычно, наверно?
Нет, я 99% пишу под линупс. И как, по-твоему, спавнить дочерний процесс в линупсе?

Denis
13.03.2018
09:43:48
форком, в линуксе форк дёшев

Evgeny
13.03.2018
09:44:53
форком, в линуксе форк дёшев
тогдя я не понял о чем ты в этой фразе: "наоборот же. ты под винду пишешь обычно, наверно?"

Denis
13.03.2018
09:46:59
> а еще меня бесит спавн дочерих процессов через форк. убожество вот о чём

Evgeny
13.03.2018
09:47:14
ну я имел в виду линупс, каг бэ.

Denis
13.03.2018
09:47:32
ну а я говорю что форк это хорошо а не плохо

Dark
13.03.2018
09:47:54
ЕМНИП, нет.
Сильно от этого жизнь не усложняется, разве что ты напрямую не работаешь с сисколлами

Evgeny
13.03.2018
09:51:23
представте, что у меня жирный процесс, сидит в памяти жрет 4гб памяти и все время в нее что-то пишет.

и вот он запускает дочерний процесс, форкается и начинается адовое копирование этих 4гб

Dark
13.03.2018
09:52:17
А вот и нихера

Copy on write

Google
Dark
13.03.2018
09:52:42
Или создаём процесс с общей памятью

Evgeny
13.03.2018
09:52:58
ну дык отец-то пишет в память, вот тебе и копи

Igor
13.03.2018
09:53:16
да, копирует только те страницы что апдейтятся. но если пишется всюду то да, тогда ой

Dark
13.03.2018
09:53:43
4 гб памяти с постоянным доступам

...

Тут пиздец будет по любому

Evgeny
13.03.2018
09:55:39
ага, а накой вообще нужен сраный форк? мне е нужно никакой общей памяти с дочерним процессом

Evgeny
13.03.2018
09:56:07
забавно, что есть vfork вроде, позволяющий форкаться без копирования

обратимся к истории вопроса?
я к тому что запускать дочерний процесс в теории можно и без форка, но линупс не дает такой возможности

Denis
13.03.2018
09:56:49
это случилось не просто так

Dark
13.03.2018
09:56:55
Evgeny
13.03.2018
09:57:18
Ага, если тебе не нужно, то не значит, что никому не нужно
Ага, а если кому-то нужно, то значит всем нужно?

Igor
13.03.2018
09:57:41
Evgeny
13.03.2018
09:57:49
ИМХО форк и спавн - разные сущности

Denis
13.03.2018
09:58:01
есть ещё clone

Igor
13.03.2018
09:58:52
а если отец пишет?
ммм, что-то мне кажется что не должно но могу ошибаться

Evgeny
13.03.2018
09:59:00
На самом деле у меня была проблема с этим. я запускал стороннюю утилиту и память сжиралась просто адово

Google
Igor
13.03.2018
09:59:14
наверное при любой, да

ну может можно clone как-то специфически вызвать. но даже если твой код не пишет то могут что-то писать бибилиотеки и тут наступит проблема

Evgeny
13.03.2018
10:01:09
вот и я о том же

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

Igor
13.03.2018
10:02:50
новый - так чем это от vfork отличается?

Dark
13.03.2018
10:03:15
vfork вообще никаким боком тут не поможет

Можешь сам глянуть

Да и проблем с vfork'ом много

Admin
ERROR: S client not available

Igor
13.03.2018
10:03:44
он не копирует адресное пространство родителя и стопает родителя до вызова exec в потомке

Evgeny
13.03.2018
10:04:54
vfork вообще никаким боком тут не поможет
Помогает, сразу делаем exec и никакого копирования. Казалось бы, вот оно счастье, но....

Dark
13.03.2018
10:05:22
Дык с vfork нельзя exec, не?

Evgeny
13.03.2018
10:05:34
Но с vfork мы теряем возможно писать в stdout и читать из stdin потомка

Dark
13.03.2018
10:05:54
Есть еще clone

Igor
13.03.2018
10:06:01
vfork() is a special case of clone(2). It is used to create new processes without copying the page tables of the parent process. It may be useful in performance-sensitive applications where a child is created which then immediately issues an execve(2).

Dark
13.03.2018
10:06:21
В котором, вроде, можно прописать не клонирование памяти

Так что такая возможность есть и не теоретически

Igor
13.03.2018
10:07:46
“Но с vfork мы теряем возможно писать в stdout и читать из stdin потомка” - после exec в поотмке? не понимаю, почему?

до exec в потомке желательно конечно никаких библиотечных вызовов не делать

Google
Igor
13.03.2018
10:10:39
ну тут важно ты хочешь читать/писать до или после exec

Evgeny
13.03.2018
10:12:42
после exec

хочу прочитать вывод дочернего процесса

Dark
13.03.2018
10:13:29
А с обычным форком так можно?

Evgeny
13.03.2018
10:15:30
вроде да

Dark
13.03.2018
10:16:46
Ну тогда пишешь форк, стопаешь на время отца, что бы избежать cow, exec, и продолжаешь выполнение отца

Evgeny
13.03.2018
10:16:56
я использовал вот это https://dlang.org/phobos/std_process.html#spawnProcess

и короче валилось в адский своп из-за нехватки памяти

потому что папаша жрал процентов 60 оперативы и непрерывно что-то в нее писал

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

Dark
13.03.2018
10:18:49
Стопнул бы отца, что бы не непрерывно писал, дождался ответа от сына, и выполнял бы дальше

Evgeny
13.03.2018
10:18:56
зачем делать копию адресного пространства родителя и сразу же ее отбрасывать?

Pavel
13.03.2018
10:19:31
Потому что иначе очень сложно)

Evgeny
13.03.2018
10:19:50
Потому что иначе очень сложно)
ну и вянда как-то же обходится без этого

не люблю винду, но многие вещи в ней сделаны умнее

Dark
13.03.2018
10:20:14
зачем делать копию адресного пространства родителя и сразу же ее отбрасывать?
Она не делается случаях в 90%. Просто у тебя неудачная ситуация, так сказать

Pavel
13.03.2018
10:20:29
Как ни удивительно но на SO пишут что в винде создание процесса обходится дороже

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