2011-11-01 15 views
10

Mam aplikację, która może odnieść korzyści z używania jednej z bibliotek sygnałów doładowania w porównaniu z rodzimym rozwiązaniem.Sygnały a sygnały2

Aplikacja jest wielowątkowa, ale część, która przetwarza sygnał, jest pojedyncza.

Czy istnieje jakikolwiek powód, aby preferować Boost.Signals2 nad Boost.Signal, jeśli wielowątkowość nie jest problemem?

+1

Upewnij rozważyć [libtscb] (http://www.chaoticmind.net/~hcb/projects/libtscb /) - szczególnie warte są jego porównania wydajności (http://www.chaoticmind.net/~hcb/projects/libtscb/doc/index.html#performance). – ildjarn

+0

@ildjarn: niestety libtscb wymaga GCC. Nie wiem o reszcie biblioteki, ale atomiki są implementowane tylko dla GCC. Gdy Visual Studio otrzyma C++ 11 'std :: atomic', może być łatwo przeniesione. –

+0

Inną opcją jest skorzystanie z obecnie sprawdzanego [Boost.Atomics] (http://www.chaoticmind.net/~hcb/projects/boost.atomic/doc/index.html): -] – ildjarn

Odpowiedz

9

Boost.Signals jest teraz przestarzała i Boost.Signals2 powinny być stosowane zamiast (patrz v1.54 docs)

+3

Przytoczyć ważną notatkę na tej stronie (dla wygody): "** Boost.Signals nie jest już aktywnie konserwowane.Nie używaj Boost.Signals do nowego rozwoju (użyj Boost.Signals2 zamiast). ** Jeśli masz kod oparty na Boost.Signals, będzie kontynuować pracę, ale rozważ przejście do Boost.Signal s2. W dokumentacji Signals2 znajduje się przewodnik przenoszący. " – Cornstalks

+0

Szczerze mówiąc, w większości przypadków, gdy zaczniesz używać fajnej funkcji, będziesz chciał użyć jej w innych miejscach niż tam, gdzie było to pożądane. –

5

Oryginalnie, jeśli wszystkie sygnały i gniazda były w tym samym wątku, boost.signals było w porządku. Jednak nie jest już utrzymywany - dokumentacja sugeruje użycie sygnałów 2 we wszystkich nowych kodach.

+4

signals2 ma inne zmiany w stosunku do sygnału, więc i tak należy to rozważyć. –