Pregunta

Me gustaría poner en práctica un modelo simple de publicación / suscripción donde:

un único editor publica un token (un puntero a un objeto) a sus suscriptores. Editorial y los suscriptores son temas independientes. Tengo la intención de agregar cola de hilo de fallos para cada uno de los abonados de tal manera que Publisher puede mantener la distribución de las fichas a los suscriptores, mientras que están procesando las fichas.

Como se puede ver, es decir, todas las suscriptores en realidad comparten los mismos punteros (nota: los abonados no pueden modificar el objeto con punta de todos modos, así que no hay problema). Una vez que el puntero compartido no es utilizado por cualquiera de los suscriptores más, sería muy bueno si el puntero podría auto-borrarse a sí mismo una vez que el último hilo de abonados se hace con ella.

Es este un buen lugar para utilizar un puntero inteligente? Si es así, ¿cuáles de los punteros inteligentes deben usar?

I desarrollar en Windows con MSVC2008, y estoy usando Intel TBB, Boost y Qt.

¿Fue útil?

Solución

Si asumo su diseño es viable (que huele raro con el contexto de cero, pero bien puede ser correcto), boost :: shared_ptr podría ser el camino a seguir.

http://www.boost.org/doc /libs/1_38_0/libs/smart_ptr/smart_ptr.htm

Editar: cambiar a partir de shared_ptr :: :: weak_ptr, porque soy un idiota ...

Otros consejos

Lo que usted describe es el modelo COM clásico para el control de objetos vida. Es necesario un puntero inteligente que mantiene contador de referencia en el objeto - boost::shared_ptr , boost::intrusive_ptr o de clase CComPtr . Yo sugeriría shared_ptr, como los otros dos requerirán su propia implementación de la cuenta ref.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top