Boost.Signals устарела

Boost.Signals больше не поддерживается, поэтому устарела. Не используйте Boost.Signals для новой разработки (вместо этого используйте Boost.Signals2). Если у вас есть код на основе Boost.Signals, он продолжит работать, но рассмотрите возможность перехода на Boost.Signals2.

http://www.boost.org/users/history/version_1_54_0.html

Таким образом, сигналы устарели. Я запутался в этом. Насколько я знаю, Signals2 — это многопоточная версия Signals. Но что, если мне не нужно многопоточное использование сигналов? Я получу некоторые накладные расходы? Могу ли я использовать boost :: signal2 :: trackable? Получу ли я какие-либо недостатки при использовании Signals2 в однопоточном приложении?

1

Решение

Насколько я знаю, Signals2 — это многопоточная версия Signals. Но
Что делать, если мне не нужно многопоточное использование сигналов? Я получу немного
накладные расходы?

В однопоточной среде используйте dummy_mutex, как описано здесь.

Могу ли я использовать boost :: signal2 :: trackable?

Да, вы можете использовать его, но имейте в виду, что это не будет потокобезопасный подход. Поэтому, если вы в конечном итоге решите настроить свой модуль для многопоточной среды, вам придется изменить дизайн ваших слотов.

2

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

Использование многопоточного безопасного кода в однопоточном приложении всегда нормально. Вы можете получить некоторые накладные расходы из-за чрезмерной осторожности или из-за бесполезной блокировки, но это всегда будет работать. И я бы не стал беспокоиться о производительности — очень маловероятно, что это будет узким местом.

1