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
}