История изменений
Исправление asaw, (текущая версия) :
А почему тебе надо избавиться от «необходимости» вызова какого-либо метода участвующего в деструкции нижележащей зависимой сущности?
В качестве защиты от дурака, чтобы этот вызов был не забыт.
Чем не засунуть слоты в одну пачку и спокойно ими манипулировать? Где слот, если сам по какой-то причине хотеть завершится — пусть сообщит вышестоящему, мол, давай, ломай меня полностью?
Я из этого понял только первое предложение) С самими по себе слотами никаких проблем нет. Есть проблема в том, что их дергает io_service::dispatch() из потока, который запущен в BaseActor и который продолжает работать во время разрушения акторов, а приведенные конкретные акторы, соответственно, генерируют сигналы, которые уже разрушены между моментом вызова деструкторов наследника и деструктора базового класса. Надеюсь, понятно написал. В общем, проблема сродни вызову виртуальной функции из деструктора, базового класса, только виртуальная функция в данном случае дергается не деструктором, а внешним объектом.
Исправление asaw, :
А почему тебе надо избавиться от «необходимости» вызова какого-либо метода участвующего в деструкции нижележащей зависимой сущности?
В качестве защиты от дурака, чтобы этот вызов был не забыт.
Чем не засунуть слоты в одну пачку и спокойно ими манипулировать? Где слот, если сам по какой-то причине хотеть завершится — пусть сообщит вышестоящему, мол, давай, ломай меня полностью?
Я из этого понял только первое предложение) С самими по себе слотами никаких проблем нет. Есть проблема в том, что их дергает io_service::dispatch() из потока, который запущен в BaseActor и который продолжает работать во время разрушения акторов, а приведенные конкретные акторы, соответственно, генерируют сигналы, которые уже разрушены между моментом вызова деструкторов наследника и деструктора базового класса. Надеюсь, понятно написал.
Исходная версия asaw, :
А почему тебе надо избавиться от «необходимости» вызова какого-либо метода участвующего в деструкции нижележащей зависимой сущности?
В качестве дащиты от дурака, чтобы этот вызов был не забыт.
Чем не засунуть слоты в одну пачку и спокойно ими манипулировать? Где слот, если сам по какой-то причине хотеть завершится — пусть сообщит вышестоящему, мол, давай, ломай меня полностью?
Я из этого понял только первое предложение) С самими по себе слотами никаких проблем нет. Есть проблема в том, что их дергает io_service::dispatch() из потока, который запущен в BaseActor и который продолжает работать во время разрушения акторов, а приведенные конкретные акторы, соответственно, генерируют сигналы, которые уже разрушены между моментом вызова деструкторов наследника и деструктора базового класса. Надеюсь, понятно написал.