2012-12-04 4 views
0

Я работаю над проектом, который использует boost::interprocess_mutex es повсюду, даже несмотря на то, что приложение никогда не было fork() s детьми, но в значительной степени полагается на многопоточность.boost :: interprocess_mutex vs process local boost :: mutex

Правильно ли считать, что все эти interprocess_mutex es могут быть заменены на локальные мьютексы процесса, не нарушая ничего?

Является ли мое предположение, что это потенциально может повысить производительность (хотя бы с минимальным коэффициентом) правильно?

Есть ли какая-либо возможная причина для использования межпроцессной синхронизации в рамках одного (необязательно многопоточного) процесса?

+0

Использует ли он общую память? и является ли это память, используемая несколькими приложениями? Это тест - он не должен развиваться, могут существовать разные базы кода (отдельные исполняемые файлы), разделяющие некоторый ресурс. (Но если не тогда, я бы *** догадался ***, что вы могли бы использовать обычные мьютексы) – Caribou

ответ

3

Использует ли он совместно используемую память или какой-либо другой механизм IPC? и является ли это память, используемая несколькими приложениями? Thats the test ...

У него нет вилки, могут быть разные кодовые базы (отдельные исполняемые файлы), разделяющие некоторый ресурс. Например, есть ли приложение мониторинга или интерфейс, который получает статистику из приложения, когда он запускается через какой-то механизм IPC? Обратите внимание, что могут быть другие лучшие способы сделать это, это всего лишь пример.

Глядя на заголовки:

http://www.boost.org/doc/libs/1_52_0/boost/interprocess/sync/windows/mutex.hpp

http://www.boost.org/doc/libs/1_52_0/boost/interprocess/sync/posix/mutex.hpp

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

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

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