Boost.Python и Boost.Signals2: ошибки сегментации

У меня проблема с интеграцией boost.signals2 в мою существующую C ++ lib, которую я показал с помощью boost.python.

У меня есть класс, который подвергается воздействию Python сstd::shared_ptr, Этот класс должен быть в состоянии поднять некоторые сигналы на определенных событиях. Поэтому я выставилconnect_slot функция, которая принимаетboost::python::object в качестве аргумента. Если я поднимаю сигнал сразу после подключения слота, все работает нормально, но если класс позже поднимает сигналы, я получаю ошибки сегментации.

Я думаю, что это может быть связано с многопоточностью в c ++ lib (он также использует boos :: asio и т. Д.)

Вот некоторые фрагменты кода:

MyClass.h:

public:
    typedef boost::signals2::signal signal_my_sig;
    void connect_slot(boost::python::object const & slot);

private:
    signal_my_sig    m_sig;

MyClass.cpp:

void MyClass::connect_slot(boost::python::object const & slot) { 
    std::cout < "register shd" < std::endl;
    m_sig.connect(slot);

    m_sig(12345); // this works
}


void MyClass::some_later_event() {
    m_sig(654321); // this does not work

}

Ответы на вопрос(2)

Ваш ответ на вопрос