Имена в boost::interprocess::named_mutex

Тема в разделе "LANGS.C", создана пользователем _DEN_, 29 ноя 2009.

  1. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    boost::interprocess::named_mutex

    Эксперименты показывают, что буст по умолчанию создает глобальный мутекс. То есть, если создать мутекс "ololo", то реально создастся мутекс "Global\ololo". При этом все-таки хочется создавать локальный мутекс. Это нужно для того, чтобы мутекс дох, если сдох его процесс. Глобальные мутексы в таком случае не дохнут. Пока что придумался один workaround.

    boost::interprocess::named_mutex(boost::interprocess::open_only, "..\\MyLocalMutex")

    Скорее всего тут помог слепой виндовый препроцессор путей. Очевидно, что данный способ - дикость и грязный хак. Совершенно непонятно, как это поведет себя в других осях, или хотя бы в других виндах / бустах / студиях.

    Вопрос - сталкивался ли кто-то с этим вопросом, и есть ли более православное решение?
     
  2. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    я слышал, что в бусте posix мютексы, а они по определению должны жить и при убитом процессе, в винде реализуются файлами о_О
     
  3. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    GoldFinch

    Хм... А есть какие-нибудь именованые posix-объекты, которые видны из соседних процессов, но дохнут вместе с процессом-овнером?
     
  4. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    ProcExplorer Русиновича - покажет