powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Есть ли смысл в потоках, если есть процессы
25 сообщений из 67, страница 1 из 3
Есть ли смысл в потоках, если есть процессы
    #38362089
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я прочитал, что в плюсах нет своего многопоточного программирования и поэтому плюсы это просто враппер над многопоточностью, которую предоставляет ось.

Вопрос: если для решения задачи, такой как распарсивание гигабайтов текста параллельным методом уже написана утилита, которая может быть запущена в количестве процессов равное числу ядер сервера минус один или два (например два проца по 8 ядер, то запускаем 14-15 процессов), то есть ли хоть малейший смысл заморачиваться в этом случае с написанием многопоточного функционального попила внутри каждого процесса или если речь идет об обработке текста, которая тупо жрет проц и из сервисов системы использует только файловый ио, то может быть конкретно в данном случае заморачиваться с мультитредингом это лишнее?
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38362129
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело в том что С++ как язык не владеет объектами мультитрединга или
мультипроцессности. Они - это скорее API конкретной ОС или платформы.
Тоесть 90% успеха твоего мероприятия зависит от того под ЧТО ты будешь
кодить распарсивание гигабайтов. Windows или Linux. Там эти вещи
довольно по разному реализованы. Поэтому определяйся сразу.
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38362134
LumixЯ прочитал, что в плюсах нет своего многопоточного программирования и поэтому плюсы это просто враппер над многопоточностью, которую предоставляет ось.
Нет. В стандарте C++11 уже больше года поддерживаемом всеми компиляторами есть потоки.

Lumix конкретно в данном случае заморачиваться с мультитредингом это лишнее?
Да.
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38362151
Фотография Новый Год
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вау
а сколько памяти жрет?

14-15 процессов в своп не уйдудт?

у меня есть что-то подобное. "утилита" 3Гб запросто отъедает, тогда как исходный текст - полгига

4 штучки запустил и хватит. правда, у меня и ядер больше нет
зы. гипертдейдинг отключи
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38362163
Фотография defragmentator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Осмелюсь высказать догадку: процесс жрёт больше ресурсов, чем поток?
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38362181
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LumixЯ прочитал, что в плюсах нет своего многопоточного программирования и поэтому плюсы это просто враппер над многопоточностью, которую предоставляет ось.


Начнем с того, что это уже не так. В последнем стандарте в C++ появилась уже встроенноая поддержка многопоточного программирования.

http://en.wikipedia.org/wiki/C 11#Threading_facilities
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38362184
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lumix
Вопрос: если для решения задачи, такой как распарсивание гигабайтов текста параллельным методом уже написана утилита, которая может быть запущена в количестве процессов равное числу ядер сервера минус один или два (например два проца по 8 ядер, то запускаем 14-15 процессов), то есть ли хоть малейший смысл заморачиваться в этом случае с написанием многопоточного функционального попила внутри каждого процесса или если речь идет об обработке текста, которая тупо жрет проц и из сервисов системы использует только файловый ио, то может быть конкретно в данном случае заморачиваться с мультитредингом это лишнее?

Это тебе никто не скажет, это целиком зависит от конкретики твоей этой задачи парса текста.

В общем случае преимущество потоков передо процессами в том, что потоки могут без усилий использовать общие данные,
в случае процессов на это нужно тратить дополнительные достаточно серьёзные усилия.
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38362199
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defragmentatorОсмелюсь высказать догадку: процесс жрёт больше ресурсов, чем поток?

Это неправильная догадка.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38362203
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivLumixЯ прочитал, что в плюсах нет своего многопоточного программирования и поэтому плюсы это просто враппер над многопоточностью, которую предоставляет ось.


Начнем с того, что это уже не так. В последнем стандарте в C++ появилась уже встроенноая поддержка многопоточного программирования.

http://en.wikipedia.org/wiki/C 11#Threading_facilities

Да я в курсе за эту шнягу. Но я нигде не могу найти (в том числе по этой ссылке), информацию, что эта многопоточность не использует нативные потоки операционной системы, то есть не является враппером. Максимум, что я нашел это фразу типа "многопоточность в ++11 встроена в ядро плюсов", но значит ли это что теперь это никак не связано с потоками операционной системы я пока пруф найти не могу.



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

Понятно. Значит в нашем случае многопоточность дело лишнее, потому что у нас общие данные и так используются без усилий. Эту безусильность гарантирует менеджер пула процессов. А что касается запись в общий файл, то у нас используется фишка из фрилока: если занято усни, а потом попробуй снова.

PS. Кстати, именно на основе этого критерия я сегодня утром посоветовал чуваку вот тут 14691640 решить его задачу как раз многопоточно, а не многопроцессово. Хотя у него там питон, а я не в курсе как питон работает с многопоточностью...
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38362210
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С точки зрения bash(Unix),cmd(Win) на процессах оно поухватистее будет.
Поюзабельнее. Поскольку из таск-менеджера или из top видна статистика
процессов то ими можно манипулирновать, создавать, убивать менять
приоритеты, посылать сигналы, организовывать конвееры и батчи и прочие
админские штуки. Тоесть очень много пространства для манёвра.

С потоками такое сделать будет нетривиально.
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38362328
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonС точки зрения bash(Unis),cmd(Win) на процессах оно поухватистее будет.
Поюзабельнее. Поскольку из таск-менеджера или из top видна статистика
процессов то ими можно манипулирновать, создавать, убивать менять
приоритеты, посылать сигналы, организовывать конвееры и батчи и прочие
админские штуки. Тоесть очень много пространства для манёвра.

С потоками такое сделать будет нетривиально.

Чего?
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38362335
Фотография Новый Год
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivmaytonС точки зрения bash(Unis),cmd(Win) на процессах оно поухватистее будет.
Поюзабельнее. Поскольку из таск-менеджера или из top видна статистика
процессов то ими можно манипулирновать, создавать, убивать менять
приоритеты, посылать сигналы, организовывать конвееры и батчи и прочие
админские штуки. Тоесть очень много пространства для манёвра.

С потоками такое сделать будет нетривиально.

Чего?
maytonС точки зрения bash(Unix),cmd(Win) на процессах оно поухватистее будет.
Поюзабельнее. Поскольку из таск-менеджера или из top видна статистика
процессов то ими можно манипулирновать, создавать, убивать менять
приоритеты, посылать сигналы, организовывать конвееры и батчи и прочие
админские штуки. Тоесть очень много пространства для манёвра.
С потоками такое сделать будет нетривиально.

я подозреваю что у тс 100% утилизация процессора
эти танцы с бубном тут ничем не помогут
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38362336
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LumixДа я в курсе за эту шнягу. Но я нигде не могу найти (в том числе по этой ссылке), информацию, что эта многопоточность не использует нативные потоки операционной системы, то есть не является враппером. Максимум, что я нашел это фразу типа "многопоточность в ++11 встроена в ядро плюсов", но значит ли это что теперь это никак не связано с потоками операционной системы я пока пруф найти не могу.


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

Одно не понятно -- чем тебе так мешает участие операционной системы.
Для справки -- в диспетчеризации процессов ОС участвует ровно так же, как и в диспетчеризации потоков, только стоимость переключения контекста дороже.

LumixПонятно. Значит в нашем случае многопоточность дело лишнее, потому что у нас общие данные и так используются без усилий. Эту безусильность гарантирует менеджер пула процессов. А что касается запись в общий файл, то у нас используется фишка из фрилока: если занято усни, а потом попробуй снова.


Что-то мне намекает на то, что именно потоки-то вам и нужны. Но тебе виднее.

Вообще, многозадачность на процессах уже сейчас (я считаю) -- пережиток прошлого.
По одной простой причине -- потоки могут разделять ресурсы, а процессы -- нет.
Процессы обладают только одним достоинством -- они более безопасны, если гикнется, то умрёт только этот процесс, остальные выживут.
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38362353
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivВообще, многозадачность на процессах уже сейчас (я считаю) -- пережиток прошлого.
По одной простой причине -- потоки могут разделять ресурсы, а процессы -- нет.
Процессы обладают только одним достоинством -- они более безопасны, если гикнется, то умрёт только этот процесс, остальные выживут.
примитивная аргументация
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38362381
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилпримитивная аргументация

Примитивная аргументация о примитивной аргументции.
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38362500
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivОдно не понятно -- чем тебе так мешает участие операционной системы.
Для справки -- в диспетчеризации процессов ОС участвует ровно так же, как и в диспетчеризации потоков, только стоимость переключения контекста дороже.

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


LumixВообще, многозадачность на процессах уже сейчас (я считаю) -- пережиток прошлого.

Соображения, почему решение на процессах пока ещё живы.

1) младшие кодеры часто совершают ошибки с нарушением атомарности при реализации многотредовых систем, а при организации параллели на процессах эту атомарность обеспечивает ось. мультитредовый код сложнее читать и он более error prone

2) самый вкусный мультитредовый эффект это так называемое функциональное распараллеливание, а не распараллеливание данных, ну например, рендер в одном потоке, логика в другом, ио в третьем. В этом случае если кто-то начинает много что-то обсчитывать, то по крайней мере юзеринтерфейсы не подвисают, а просто показывают статусы

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

Поскольку в нашем случае никакого функционального разделения нет, а задача 100% на дата-декомпозите, то и построение на процессах канает.

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

LumixПо одной простой причине -- потоки могут разделять ресурсы, а процессы -- нет.

Единственная причина которую я встречал в своей практике, где реально важен меморишаринг, это какая-то супержирная дата, которую дорого капусулить в сервис, ну например, какой-нибудь look-up на 1,5 Гб. Все остальные кейсы которые мне встречались сводились к организации общения через третье лицо, например, через файл, через базу, через сервер.


LumixПроцессы обладают только одним достоинством -- они более безопасны, если гикнется, то умрёт только этот процесс, остальные выживут.

Ещё достоинства есть.
1) исчезает вопрос с контролем атомарности => проще разработка
2) управление нагрузкой может осуществлять сисадмин стандартными средствами оси, нет надобности мутить свои балансеры

- - - - - - - - - - - - - - -

PS. узнал для себя новое слово - гинуться. первый раз встречаю, чтобы гиком называли доходягу)))
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38362582
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lumix,

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


А я мыслю так, что ты мыслишь неправильно.
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38362599
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lumix,

Вот вроде бы и правильно всё пишешь, а всё получается как-то не так.

С чего ты взял, что существуют какие-то такие волшебные "потоки вне ОС", которые должны быть быстрее потоков обычных?
Что за такие турбореактивные потоки должны быть? С чего им быть быстрее?
Поток -- это набор комманд, который исполняется. Он исполняется одинаково быстро как под управлением ОС, так и без неё.
Выполняет её процессор, там всё равно, ОС участвует или нет. Когда ОС участвует, это прерывание, по истечении кванта времени, выделенного на данный поток или процесс, потоки и процессы в этом плане равнозначны, что поток прерывается, что процесс. Что отличается, так если ранее процессор занимал другой процесс, нежели тот, который приходит в процессор, то будет переключение контекста на другой процесс. Если нет, а это был другой поток этого же процесса -- не будет переключения. Правда, в процессоре был тред другого процесса, тоже будет переключение.
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38362762
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivС чего ты взял, что существуют какие-то такие волшебные "потоки вне ОС", которые должны быть быстрее потоков обычных?

Ну вот так подумал, а вдруг такое есть. Создал тему. Оказалось, что этого нет. Вопрос закрыт.
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38362966
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivПроцессы обладают только одним достоинством -- они более безопасны, если гикнется, то умрёт только этот процесс, остальные выживут.
Я это и имел в виду когда писал про юзабельность процессов. А ты что спросил?
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38363005
LumixСоздавая тему, я пытался проверить, а можно ли на тредах выжать ещё больше производительность, но если треды и процы различаются только меморишарингом, то решение на процах пусть и остается. В итоге зачем я открывал тему, я все ответы получил.
Кстати, а кто в курсе, если одна и та же функция используется в разных процессах, то код этой функции копируется или размещается в разделяемой памяти и используется оттуда?
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38363041
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если утилита есть и задачу выполняет, то заморачиваться нет смысла.

если задачу не выполняет - на вещи надо смотреть ширше. Допустим, есть у вас этиваши 15 потоков. А диск вообще справится с одновременным чтением в такое кол-во потоков? Конечно в общем случае это зависит от задачи, но если полагать что каждый из 15 потоков делает последовательное чтение, мне кажется hdd перосто уйдет в сплошной seek, а ssd довольно сильно поплохеет.
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38363158
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapokа ssd довольно сильно поплохеет.

Прошу уточнить термин поплохеет для ssd, потому что у нас серваки как раз на ssd. У них реально резко сильно вырастает физический износ??? или под поплохеет имеется ввиду 100% нагрузка в течение очень долгого времени?
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38363161
jmp_original
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
та же функция в разных процессахКстати, а кто в курсе, если одна и та же функция используется в разных процессах, то код этой функции копируется или размещается в разделяемой памяти и используется оттуда?
Разделяемый, при условии, что EXE/DLL, в которой находится этот код была загружена по одинаковому адресу (в виртуальном адресном пространстве процесса).
...
Рейтинг: 0 / 0
Есть ли смысл в потоках, если есть процессы
    #38363180
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jmp_originalта же функция в разных процессахКстати, а кто в курсе, если одна и та же функция используется в разных процессах, то код этой функции копируется или размещается в разделяемой памяти и используется оттуда?
Разделяемый, при условии, что EXE/DLL, в которой находится этот код была загружена по одинаковому адресу (в виртуальном адресном пространстве процесса).

То есть вы получается утверждаете две интересные вещи

1) не всегда DLL означает загрузку функции один раз и если DLL загружается не операционной системой, а из кода вручную (аналог создания на куче), то такое "ручное" подсоединение DLL создаст столько же копий, сколько и процессов

2) что ось не оптимизирует память даже если чексум вновь исполняемого файла равняется чексуму уже находящихся в исполнении файлов

так-то странно...
...
Рейтинг: 0 / 0
25 сообщений из 67, страница 1 из 3
Форумы / C++ [игнор отключен] [закрыт для гостей] / Есть ли смысл в потоках, если есть процессы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]