Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 16.01.2023
Сообщений: 12

Процессы и потоки

03.07.2023, 14:59. Показов 1161. Ответов 15

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

Дайте обоснованный ответ в приоритете создания процесса вместо потока
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.07.2023, 14:59
Ответы с готовыми решениями:

Процессы и потоки. С++
Помогите выполнить задание, пожалуйста: Процесс/поток генерирует в файл заданное при его запуске количество псевдослучайных целых чисел...

Потоки и процессы
Вопрос общего плана. Использую программу, выполняющую большой объем вычислений и рисование в файл. Делаю распараллеливание в виде...

Потоки и процессы
Процесс А инициализирует массив случайными значениями и записывает их в файл, а затем запускает процесс Б в командной строке передается имя...

15
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
03.07.2023, 15:15
Хочется послать в гугл за фразой "чем отличается процесс и поток"
Вопрос очень популярный, на него тьма информации.
0
0 / 0 / 0
Регистрация: 16.01.2023
Сообщений: 12
03.07.2023, 15:20  [ТС]
мне нужно не различие, а пример приоритета процесса над потоком, прочитай еще раз мой вопрос
0
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
03.07.2023, 15:27
Цитата Сообщение от Tny2 Посмотреть сообщение
я чувствую что процессы и потоки даже сравнивать нельзя, и одно не заменяет другое
Как известно у каждого из них есть свои свойства. Смотрите на задачу и что для этой задачи является более подходящим то и выбирайте.

Цитата Сообщение от Tny2 Посмотреть сообщение
Дайте обоснованный ответ в приоритете создания процесса вместо потока
Например, можно fork-нуть процесс и получить его полную копию, для создания снимка. А вот решить аналогичную задачу (снять снимок процесса) путем создания потока не получится.

P.S: сам по себе fork не делает снимок, а создает копию процесса. Что бы получился снимок, естественно придется дополнительно поработать.

Добавлено через 5 минут
С полной копией я конечно немного загнул, т.к например pid родительского процесса у этих двух будет отличаться...
1
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
03.07.2023, 15:31
Лучший ответ Сообщение было отмечено Tny2 как решение

Решение

Тема вообще говоря большая, но если "с практической точки зрения" и ограничиться строго Windows и говорить не совсем идеально точно, то я бы сказал так.

При "запуске exe-шника" порождается процесс. Нельзя запустить сторонний exe-шник "в рамках нового потока" без хакерства. Т.е. в рамках потока можно выполнять только код того же приложения из того же exe-шника (или подключенной dll). (Выполняется код всегда в рамках потока, хотя бы один поток для процесса всегда создаётся. Операционная система выделяет кванты времени именно потокам, не процессам.)
Процессы, как и потоки, "выполняются параллельно" (точнее сказать потоки разных процессов выполняются параллельно). Т.е. если мы хотим запустить "параллельно выполняемый код", то мы можем запустить как отдельный процесс, так и поток. Но:
а) процесс съест больше ресурсов
б) между потоками одного процесса у нас общая память, так что передача данных между потоками - это просто и дёшево; а вот передавать данные между процессами - это отдельная история, т.к. адресное пространство каждого процесса изолировано от других процессов;
в) если случится краш в каком-то потоке (необработанное исключение) - то ОС закроет весь процесс, связанный с этим потоком, включая все потоки; в случае же процесса (если мы создали его "для параллельного выполнения кода") краш в таком процессе унесёт только его, но не родительский процесс.

Например, из-за пункта в) сейчас браузеры (как минимум chrome) запускают отдельный процесс на каждую вкладку; если какая-то проблема - то вкладка крашится, но браузер (основное окно со вкладками) продолжает работать "ой, вкладка закрашилась, сейчас мы её перезапустим", запускает новый процесс для вкладки, открывает в ней ту же страничку.

Добавлено через 1 минуту
Цитата Сообщение от Tny2 Посмотреть сообщение
прочитай еще раз мой вопрос
Ты в гугл поленился сходить и подумать головой, раз не предложил ни одной своей идеи, а требуешь и в хамской манере. Молодец, чо
1
0 / 0 / 0
Регистрация: 16.01.2023
Сообщений: 12
03.07.2023, 15:39  [ТС]
а в чем идея fork(а) если для снимка памяти юзают valgrind ?

Добавлено через 4 минуты
так или иначе, спасибо за ответ, в какой-то степени приоткрывает занавес
0
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
03.07.2023, 15:42

Не по теме:

Цитата Сообщение от Tny2 Посмотреть сообщение
так или иначе
Было бы уместнее "извините, погорячился, был неправ".


Пожалуйста.
0
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
03.07.2023, 15:45
Tny2,
valgrind это сторонее ПО которое может быть использовано для анализа других программ.

пример с fork-ом касается снимков самой программы из себя, во время ее выполнения (например, как реакция на действие пользователя)
0
0 / 0 / 0
Регистрация: 16.01.2023
Сообщений: 12
03.07.2023, 15:54  [ТС]
типа мы запускаем процесс который передает через pci инфу другому процессу о действиях пользователя ?
типа: игра>>античит ?
0
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
03.07.2023, 16:04
Tny2,
типа у нас есть требование обеспечить персистентность данных, но на диск при каждом изменении данные мы сбрасывать не хотим...

есть так же куча потоков которые могут менять/обновлять данные... и в какой то момент мы решили сделать дамп данных.

делаем fork, получаем копию процесса, сбрасываем все интересующие нас данные на диск и эти данные будут представлять собой состояние системы на тот момент когда был затребован дамп
0
0 / 0 / 0
Регистрация: 16.01.2023
Сообщений: 12
03.07.2023, 16:26  [ТС]
очень интересный способ
как я понимаю мы обрабатываем определенный сигнал
дублируем процесс, скидываем инфу, и лочим дублированный процесс ?
0
 Аватар для COKPOWEHEU
4079 / 2677 / 432
Регистрация: 09.09.2017
Сообщений: 11,893
03.07.2023, 16:28
Цитата Сообщение от Tny2 Посмотреть сообщение
я чувствую что процессы и потоки даже сравнивать нельзя, и одно не заменяет другое
Напрасно. По сути процесс и поток это почти одно и то же, они отличаются только областью видимости. У процессов персональное адресное пространство (переменные и все остальное), а у потоков - общее. Соответственно если вам надо работать с общими данными - потоки, если достаточно взаимодействия через стандартные интерфейсы - процессы.
Ну и соответственно если вы запускаете чужую программу, бессмысленно делать ее потоком. Она может по незнанию потереть ваши переменные.
Цитата Сообщение от Tny2 Посмотреть сообщение
а в чем идея fork(а) если для снимка памяти юзают valgrind ?
fork это не для снимков памяти, это системный вызов именно для создания процессов. То есть fork буквально копирует весь процесс, и получается два одинаковых. Потом дочерний может вызвать exec, и заменить свой код на загруженный из файла. Собственно, это единственный способ порождения процессов. По крайней мере в Linux.
Ну а valgrind это программа-анализатор.
0
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
03.07.2023, 16:34
Tny2,
Что значит лочим дублированный процесс?

Вот представьте себе базу данных. У вас там очень много данных. Вам нужен дамп этих данных на текущий момент.

Если вы сделаете дамп и продолжите работу с данными (будете их модифицировать), а дамп скажем будет длиться 10 минут, то все что вы добавите в БД течении этих 10 минут тоже может оказаться в дампе.

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

Вот что бы не ждать эти 10 минут из-за опасения что новые данные тоже будут включены в дамп, мы просто создаем копию процесса на текущий момент времени когда это нужно пользователю и сбрасываем в новом процессе все на диск, и дальше можем работать с нашими данными и менять их не опасаясь, что это как то повлияет на дамп который все еще формируется. Так будет из-за того, что новый процесс получит состояние памяти родительского процесса. Но изменения в памяти родительского процесса никак не повлияют на память дочернего процесса

Добавлено через 2 минуты
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
fork это не для снимков памяти
Он может быть использован при создании снимков. Выше описал процесс
0
0 / 0 / 0
Регистрация: 16.01.2023
Сообщений: 12
03.07.2023, 17:12  [ТС]
Если вы сделаете дамп и продолжите работу с данными (будете их модифицировать), а дамп скажем будет длиться 10 минут, то все что вы добавите в БД течении этих 10 минут тоже может оказаться в дампе.
я имею ввиду что мы дублируем процесс и после дампа останавливаем его,наверное, лучше убиваем
я же все правильно понял ?
0
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
03.07.2023, 17:29
Tny2,
Да, нам в данном случае процесс нужен был именно для формирования дампа. Если дамп сделан, то процесс более не нужен.
1
2393 / 1913 / 763
Регистрация: 27.07.2012
Сообщений: 5,557
03.07.2023, 23:50
Может, всё-таки с теории начать?
Э.Таненбаум - Современные операционные системы. Глава 2. Процессы и потоки.
Аж 100 страниц. Наверное, что-то полезное найдётся )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.07.2023, 23:50
Помогаю со студенческими работами здесь

Процессы и потоки
Здравствуйте, КиберФорумчане!) Начал разбираться с процессами и потоками. Представление об этом небольшое, потому сразу хотелось бы...

Процессы и потоки (функция GetProcess)
вот код навороченого диспетчера процессов, OpenThread выдаёт ошибку , почему ? #include "stdafx.h" #include...

Как на С реализовати процессы и потоки?, Как на С реализовати процессы и потоки?
Здравствуйте! Мне нужно написать на С программу под Dos с потоком не знаю как это сделать. Подскажите пожалуйста.

Потоки и процессы. Концепция и область применения
Возможно создаю тему не в том разделе, но считаю тема относится к начинающему. 1) В чем разница между потоками и процессами? 2)...

Процессы и потоки в Qt
Наткнулся на такую статью в Хабре http://habrahabr.ru/post/150274/ Пишут, что создание потока через создание класса, наследуемого от...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru