Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2012, 11:21   #1
the_deer_one
Участник клуба
 
Аватар для the_deer_one
 
Регистрация: 04.04.2010
Сообщений: 1,554
По умолчанию процессы vs потоки

Почему в некоторых программах, процесс исполнения программы распределяется не в рамках потоков одного процесса, а в рамках процессов операционки.

Например chrome.
the_deer_one вне форума Ответить с цитированием
Старый 15.02.2012, 11:28   #2
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

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

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

Итого, плюсы потоков:
- Меньшие накладные расходы
- Простота взаимодействия

Плюсы процессов:
- Лучшая надёжность и изолированность

Минусы обоих являются обратными к плюсам второго метода.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 15.02.2012, 11:30   #3
mrChester
Я
Форумчанин
 
Аватар для mrChester
 
Регистрация: 24.04.2010
Сообщений: 693
По умолчанию

Песочница
Все персонажи вымышлены, все совпадения случайны.
Если жизнь игра, тогда я её разработчик ©.
mrChester вне форума Ответить с цитированием
Старый 15.02.2012, 11:51   #4
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Цитата:
Сообщение от the_deer_one Посмотреть сообщение
Почему в некоторых программах, процесс исполнения программы распределяется не в рамках потоков одного процесса, а в рамках процессов операционки.
есть такое понятие - руки из жопы. оно объясняет очень многое

чаще всего это возникает, когда переносят программу из Linux в windows, ноги растут из линуксовой архитектуры в которой поток=процесс.
rpy3uH вне форума Ответить с цитированием
Старый 15.02.2012, 12:13   #5
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от the_deer_one Посмотреть сообщение
Почему в некоторых программах, процесс исполнения программы распределяется не в рамках потоков одного процесса, а в рамках процессов операционки.

Например chrome.
По началу неправильно прочитал вопрос: "Почему вместо процессов удобнее использовать потоки".

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

А чем использование потоков выгоднее использования процессов?
В операционной системе "живут" несколько процессов, однако в какой-то конкретный момент времени работает только один из, все остальные бездействуют (они находятся либо в состоянии "ГОТОВ", либо "ОЖИДАНИЕ"). Процесс завершает или приостанавливает свою работу, после чего работать начинает другой процесс. Перед завершением работы процесс сохраняет данные, с которыми работал (Контекст процесса), после чего работу начинает другой. Приостановка работы одного процесса, сохранение данных, подготовка работы для другого процесса - всё это занимает время, которое больше тех же самых действий, выполняемых в рамках одного процесса, на уровне потоков. Переключение контекста потока происходит быстрее, чем контекста процесса.
Вадим Мошев вне форума Ответить с цитированием
Старый 15.02.2012, 12:54   #6
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
Конкретно на данный вопрос ответа не знаю, могу лишь только предположить, что у ОС потоки имеют более высокий приоритет, поэтому они быстрее остальных обрабатываются процессором (то есть у них преимущество во времени перед потоками других программ).

Переключение контекста потока происходит быстрее, чем контекста процесса.
во-первых, у процесса нет контекста, у процесса также нет приоритета как такового, есть класс приоритета, а это не одно и тоже.
в-вторых, для планировщика windows вообще нет такого понятия как процесс, для него существуют только потоки. Процесс - это более высокий уровень абстракции. В связи с этим, как раз-таки, и возникают лозейки для скрытия процессов на уровне ядра системы. в linux же всё просто поток=процесс и всё на этом. поэтому при переносе программ на windows намного проще разбивать вычислительную работу на процесс, просто потому что так ПРОЩЕ. вот и все ответы. но это не значит что это более оптимизировано, так как в windows создание процесса по сравнению с созданием потока намного более трудоёмкая операция, а в linux же между ними никакой разницы, так как это одно и тоже

Последний раз редактировалось rpy3uH; 15.02.2012 в 12:59.
rpy3uH вне форума Ответить с цитированием
Старый 15.02.2012, 15:25   #7
the_deer_one
Участник клуба
 
Аватар для the_deer_one
 
Регистрация: 04.04.2010
Сообщений: 1,554
По умолчанию

Подытожу:
1. Соображения безопасности. При крэше одной вкладки не полетят все.
2.Между процессами изоляция более жесткая чем между потоками. То есть архитектурные соображения, сфига ли разным вкладкам друг к другу в гости лазить.
Это что касается хрома.

rpy3uH
Цитата:
для планировщика windows вообще нет такого понятия как процесс, для
него существуют только потоки.
Эт если виндовые потоки брать. А так потоки могут быть реализованы посредством самого интерепретатора/компилятора. И тогда программа может быть многопоточной, даже если ось однозадачная.
the_deer_one вне форума Ответить с цитированием
Старый 15.02.2012, 16:26   #8
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 823
По умолчанию

Иногда встает проблема работы с ОЗУ, сколько оперативной памяти можно выделить на один процесс в 32 разрядной ОС? 1,5 Гб, если не ошибаюсь.. Вот и считайте, есть 10 потоков, но только 1,5 Гб... Сталкивалась с такой проблемой, пришлось лишний раз делать сохранения и перезагрузки БД, что значительно замедлило процессы импорта/экспорта из других систем.. Но, DevExpress и другие библы не позволяют сделать 64 разрядную версию..(
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 15.02.2012, 17:56   #9
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Цитата:
Сообщение от the_deer_one Посмотреть сообщение
1. Соображения безопасности. При крэше одной вкладки не полетят все.
это у быдлокодеров при креше одного потока все остальные накрываются. у нормальных прогеров с этим проблем нет.

Цитата:
Сообщение от the_deer_one Посмотреть сообщение
2.Между процессами изоляция более жесткая чем между потоками. То есть архитектурные соображения, сфига ли разным вкладкам друг к другу в гости лазить.
при правильной организации программы даже потоки в одном процессе не смогут друг к другу лазить. но это совсем другая история
rpy3uH вне форума Ответить с цитированием
Старый 15.02.2012, 18:11   #10
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

Цитата:
Сообщение от rpy3uH Посмотреть сообщение
это у быдлокодеров при креше одного потока все остальные накрываются. у нормальных прогеров с этим проблем нет.
Гуглы - быдлокодеры. :)
ds.Dante вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Процессы WestSide Общие вопросы Delphi 3 22.01.2011 13:06
Процессы и потоки ilham Win Api 10 17.12.2008 11:03
Процессы v.korleone Помощь студентам 1 16.12.2008 16:24
Процессы student_63 Win Api 4 13.04.2008 11:46