2011-11-01 14 views
10

Tengo una aplicación que puede beneficiarse del uso de una de las bibliotecas de señales de boost en lugar de una solución interna.Señales vs Señales2

La aplicación es multiproceso, pero la parte que procesa la señal tiene un solo hilo.

¿Hay alguna razón para preferir Boost.Signals2 sobre Boost.Signal si multihilo no es un problema?

+1

Asegúrese de que se tiene en cuenta [libtscb] (http://www.chaoticmind.net/~hcb/projects/libtscb /) también - sus [comparaciones de rendimiento] (http://www.chaoticmind.net/~hcb/projects/libtscb/doc/index.html#performance) son especialmente notables. – ildjarn

+0

@ildjarn: desafortunadamente, libtscb requiere GCC. No sé sobre el resto de la biblioteca, pero los atómicos solo se implementan para GCC. Una vez que Visual Studio obtiene C++ 11 'std :: atomic' podría ser trivialmente portado. –

+0

Otra opción es utilizar el actualmente bajo revisión [Boost.Atomics] (http://www.chaoticmind.net/~hcb/projects/boost.atomic/doc/index.html): -] – ildjarn

Respuesta

9

Boost.Signals ahora está en desuso, y Boost.Signals2 deben utilizarse en lugar (ver v1.54 docs)

+3

Para citar una nota importante en esa página (para mayor comodidad): "** Boost.Signals ya no se mantiene activamente. No use Boost.Signals para nuevos desarrollos (use Boost.Signals2 en su lugar). ** Si tiene un código Boost.Signals existente, lo hará sigue trabajando, pero considera mudarte a Boost.Signal s2. Hay una guía de portabilidad en la documentación de Signals2. " – Cornstalks

+0

Y, para ser sincero, la mayoría de las veces, cuando comienzas a utilizar una característica agradable, terminas queriendo usarla en otros lugares que no era la que se quería antes. –

5

Originalmente, si todas las señales y ranuras estaban en el mismo hilo, boost.signals estaba bien. Sin embargo, ya no se mantiene - la documentación sugiere el uso de señales2 en todos los códigos nuevos.

+4

señales2 tiene otros cambios sobre la señal, por lo que debe considerarse de todos modos –