2010-03-11 7 views
11

Los resultados de Google dicen que hay más de 1 plantilla singleton/baseclass en boost, ¿cuál sugieres?¿Qué biblioteca de Singleton en BOOST elige?

+11

Singletons son malvados. ¡Son solo variables globales en un disfraz políticamente correcto! – Tronic

+0

Para darle un fondo, jalf lo puso bien, p. aquí: http://stackoverflow.com/questions/86582/singleton-how-should-it-be-used/761711#761711 (creo que elaboró ​​más en otro lugar, pero no puede encontrarlo ahora). –

+2

@gf: Creo que ya mencioné este punto en al menos una docena de preguntas diferentes. ;) aquí (http://stackoverflow.com/questions/1020312/are-singletons-really-that-bad/1020384#1020384) es otro. Y, aparentemente, convertí a GMan a mi punto de vista también, según su blog: (http://blackninjagames.com/?p=24), pero no puedo encontrar el hilo en el que está basado en este momento. :) Así que sí, aunque podría no responder la pregunta del OP, diría "no utilices ninguna de las clases singleton en boost". :) – jalf

Respuesta

8

No debe utilizar los singletons en boost, solo para fines internos (consulte las carpetas "detail" de libes independientes). Es por eso que no tienes una biblioteca de Singleton (todavía) expuesta en el sitio web de impulso.

Una clase singleton es muy simple de implementar pero hay muchas variantes que son útiles en casos específicos, por lo que debe usar algo que se adapte a lo que usted piensa que debería ser un singleton.

Ahora, hay otras bibliotecas que proporcionan singleton, la más genérica es Loki. Pero podría volar tu mente;)


Actualización: En la actualidad existe una biblioteca propuesta denominada singularidad que está destinado a proporcionar Singleton no global (con la opción para que sea global) que obliga a tener la creación clara y puntos de destrucción del objeto.

Véase la solicitud de revisión: http://boost.2283326.n4.nabble.com/Review-Request-Singularity-tt3759486.html

Algunos desarrolladores a impulsar parece considerar el uso de ella en lugar de algunos hacks, pero C++ 11 hace makeing una clase Singleton más fácil que antes, así lo hará depende de la opinión.

1

Mi versión de impulso ha singleton.hpp siguientes encabezados:

C:\boost_1_38_0\boost\pool\detail\singleton.hpp 
C:\boost_1_38_0\boost\serialization\singleton.hpp 
C:\boost_1_38_0\boost\thread\detail\singleton.hpp 

no he utilizado ninguna de ellas, pero probablemente me mantenga alejado de los directorios en detalle.

De todos modos, http://torjo.com/tobias/index.html#boost_utility_singleton.reference.singleton parece uno para usar, pero no parece ser realmente una parte del impulso (¿aún no aceptado?).

Cuestiones relacionadas