![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Участник клуба
Регистрация: 04.04.2010
Сообщений: 1,554
|
![]()
Почему в некоторых программах, процесс исполнения программы распределяется не в рамках потоков одного процесса, а в рамках процессов операционки.
Например chrome. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
![]()
Разделение задач по процессам - надёжнее. Если задача повисла, накосячила в памяти, ещё каких-то плохих вещей понаделала - её процесс можно просто уничтожить и создать заново. Без проблем.
Если же задача использует потоки - нельзя просто уничтожить поток. Это может быть фатально для всей программы в целом, если поток держит блокировку в момент уничтожения. Не говоря уже про остающийся после него мусор. Итого, плюсы потоков: - Меньшие накладные расходы - Простота взаимодействия Плюсы процессов: - Лучшая надёжность и изолированность Минусы обоих являются обратными к плюсам второго метода.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
![]() |
![]() |
![]() |
#3 |
Я
Форумчанин
Регистрация: 24.04.2010
Сообщений: 693
|
![]()
Песочница
![]()
Все персонажи вымышлены, все совпадения случайны.
Если жизнь игра, тогда я её разработчик ©. |
![]() |
![]() |
![]() |
#4 | |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
![]() Цитата:
чаще всего это возникает, когда переносят программу из Linux в windows, ноги растут из линуксовой архитектуры в которой поток=процесс. |
|
![]() |
![]() |
![]() |
#5 | |
Старожил
Регистрация: 12.11.2010
Сообщений: 8,568
|
![]() Цитата:
Конкретно на данный вопрос ответа не знаю, могу лишь только предположить, что у ОС потоки имеют более высокий приоритет, поэтому они быстрее остальных обрабатываются процессором (то есть у них преимущество во времени перед потоками других программ). А чем использование потоков выгоднее использования процессов? В операционной системе "живут" несколько процессов, однако в какой-то конкретный момент времени работает только один из, все остальные бездействуют (они находятся либо в состоянии "ГОТОВ", либо "ОЖИДАНИЕ"). Процесс завершает или приостанавливает свою работу, после чего работать начинает другой процесс. Перед завершением работы процесс сохраняет данные, с которыми работал (Контекст процесса), после чего работу начинает другой. Приостановка работы одного процесса, сохранение данных, подготовка работы для другого процесса - всё это занимает время, которое больше тех же самых действий, выполняемых в рамках одного процесса, на уровне потоков. Переключение контекста потока происходит быстрее, чем контекста процесса. |
|
![]() |
![]() |
![]() |
#6 | |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
![]() Цитата:
в-вторых, для планировщика windows вообще нет такого понятия как процесс, для него существуют только потоки. Процесс - это более высокий уровень абстракции. В связи с этим, как раз-таки, и возникают лозейки для скрытия процессов на уровне ядра системы. в linux же всё просто поток=процесс и всё на этом. поэтому при переносе программ на windows намного проще разбивать вычислительную работу на процесс, просто потому что так ПРОЩЕ. вот и все ответы. но это не значит что это более оптимизировано, так как в windows создание процесса по сравнению с созданием потока намного более трудоёмкая операция, а в linux же между ними никакой разницы, так как это одно и тоже Последний раз редактировалось rpy3uH; 15.02.2012 в 12:59. |
|
![]() |
![]() |
![]() |
#7 | |
Участник клуба
Регистрация: 04.04.2010
Сообщений: 1,554
|
![]()
Подытожу:
1. Соображения безопасности. При крэше одной вкладки не полетят все. 2.Между процессами изоляция более жесткая чем между потоками. То есть архитектурные соображения, сфига ли разным вкладкам друг к другу в гости лазить. Это что касается хрома. rpy3uH Цитата:
![]() |
|
![]() |
![]() |
![]() |
#8 |
Дружите с Linq ;)
Форумчанин
Регистрация: 15.10.2008
Сообщений: 823
|
![]()
Иногда встает проблема работы с ОЗУ, сколько оперативной памяти можно выделить на один процесс в 32 разрядной ОС? 1,5 Гб, если не ошибаюсь.. Вот и считайте, есть 10 потоков, но только 1,5 Гб... Сталкивалась с такой проблемой, пришлось лишний раз делать сохранения и перезагрузки БД, что значительно замедлило процессы импорта/экспорта из других систем.. Но, DevExpress и другие библы не позволяют сделать 64 разрядную версию..(
Не давай организму поблажки, каждый день тренируй его в шашки..
![]() |
![]() |
![]() |
![]() |
#9 | |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
![]() Цитата:
при правильной организации программы даже потоки в одном процессе не смогут друг к другу лазить. но это совсем другая история |
|
![]() |
![]() |
![]() |
#10 |
Старожил
Регистрация: 06.08.2009
Сообщений: 2,992
|
![]() |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Процессы | 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 |