2014-06-11 2 views
0

Я заметил, что некоторые приложения, такие как firefox/iexplorer/windows image viewer и т. Д., Не создают новые процессы для новых экземпляров приложения. Чтобы объяснить, что я имею в виду, я бы ожидал, что при открытии двух экземпляров firefox, например, существовали бы два разных процесса. Некоторые другие приложения, которые я тестировал, имели процесс на один экземпляр.Новый экземпляр, не создающий новый процесс

Мой первый вопрос: зачем кому-то использовать модель одного экземпляра нескольких экземпляров? Мне кажется намного сложнее, чем экземпляр для каждого процесса. Я полагаю, что одной из причин может быть использование ресурсов.

Мой второй вопрос: как вы реализуете что-то подобное? Например, назначить некоторые потоки для нового экземпляра?

ответ

1

Во-первых, один процесс для нескольких «экземпляров» сохраняет всю память процессов в одном месте, устраняя необходимость использования IPC для отправки сообщений между разными «экземплярами».

Чтобы реализовать что-то вроде этого, вы можете использовать CreateMutex API здесь:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms682411(v=vs.85).aspx

Если мьютекс уже существует и другой экземпляр вашего приложения запущен, вы можете просто переслать приложение открытый вызов к существующий экземпляр приложения.

Смежные вопросы