Как часто выводить из boost :: signal :: trackable?

При использовании Boost.Signals, Boost позволяет вам получить из boost::signals::trackable для упрощения управления временем жизни объекта / соединения (см. форсировать документацию).

Я нахожусь на ранней стадии моего проекта, и я думаю, стоит ли выводить из boost::signals::trackable в

  • каждый новый класс, который я пишу, который может использовать Boost.Signals в будущем
  • или только в классах, я уверен, что им понадобится функциональность trackable Bas E-Class

Основной причиной первого подхода было бы помешать мне забыть про boost::signals::trackable,

Также двойные производные типа

class Foo : public Base, public boost::signals::trackable
{
};

получить ненужное.

С другой стороны, предотвращение утечек памяти не должно быть главным аспектом дизайна. Инструменты тестирования и профилирования, такие как valgrind, должны использоваться для обнаружения утечек памяти.

Какой подход больше подходит для растущих проектов?

1

Решение

Обратите внимание, что Boost.Signals2 аннулирует Boost.Signals, Он имеет гораздо более гибкий и мощный механизм слежения.

Несмотря на то, что библиотека призвана обеспечить многопоточные программы, обеспечивающие многопоточное решение, можно избежать накладных расходов на блокировку в однопоточная среда установив boost::signals2::dummy_mutex как внутренний мьютекс сигнала.

3

Другие решения

Система Qt-Event заставляет программиста наследовать QObject так что вы действительно на стороне сохранения при использовании Qt-Events.

1