TFCweb  1.0.4 $Rev: 483 $
TFC Primavera 2012: Nucli d'un servidor web
Tipus Públics | Mètodes públics | Tipus Privats | Atributs Privats | Llista de tots els membres
Referència de la Classe Template CuaConcurrent< T, TContenidor >

Implementació d'una cua concurrent amb locking. Més...

#include <CuaConcurrent.h>

Tipus Públics

typedef const T & const_reference
 Referència constant a value_type.
typedef
boost::posix_time::milliseconds 
milliseconds
 Tipus de les marques de temps en milisegons.
typedef T & reference
 Referència a value_type.
typedef TContenidor::size_type size_type
 Tipus de la mida de la cua.
typedef T value_type
 Tipus del objectes a la cua.

Mètodes públics

 CuaConcurrent ()
 Constructor per defecte.
 CuaConcurrent (const CuaConcurrent &c)
 Constructor de còpia.
virtual ~CuaConcurrent ()
bool empty () const
 Comprova si la cua està buida.
bool pop (reference desti, const milliseconds &ms) throw (boost::thread_exception, boost::thread_interrupted)
 Extreu el primer objecte amb una espera màxima determinada.
void pop (reference desti) throw (boost::thread_exception, boost::thread_interrupted)
 Extreu el primer objecte.
void push (const_reference element)
 Encua un objecte.
size_type size () const
 Obté la mida de la cua (nombre d'elements encuats)
bool try_pop (reference desti)
 Extreu de manera immediata o falla.
bool try_push (const_reference element)
 Encua un objecte de manera immediata o falla.

Tipus Privats

typedef boost::unique_lock
< boost::mutex > 
scope_lock

Atributs Privats

boost::condition_variable cond_
 Variable de condició usada en l'extracció
TContenidor impl_
 Contenidor real.
boost::mutex mtx_
 Mutex usat en els bloquejos.

Descripció Detallada

template<typename T, typename TContenidor = std::deque<T>>
class tfc::CuaConcurrent< T, TContenidor >

Implementació d'una cua concurrent amb locking.

Template Parameters
TTipus dels elements de la cua
TContenidorTipus del contenidor utilitzat internament
Remarca
Interfície basada en std::queue. Com std::queue es fa servir el patró decorador.
Mireu també
Implementació d'una cua concurrent: http://www.justsoftwaresolutions.co.uk/threading/implementing-a-thread-safe-queue-using-condition-variables.html
Proposta "C++ Concurrent Queues": http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3353.html

Definició a la línia 55 del fitxer CuaConcurrent.h.

Documentació de les Definicions de Tipus Membre

typedef const T& const_reference

Referència constant a value_type.

Definició a la línia 63 del fitxer CuaConcurrent.h.

typedef boost::posix_time::milliseconds milliseconds

Tipus de les marques de temps en milisegons.

Definició a la línia 66 del fitxer CuaConcurrent.h.

typedef T& reference

Referència a value_type.

Definició a la línia 62 del fitxer CuaConcurrent.h.

typedef boost::unique_lock<boost::mutex> scope_lock
private

Definició a la línia 58 del fitxer CuaConcurrent.h.

typedef TContenidor::size_type size_type

Tipus de la mida de la cua.

Definició a la línia 64 del fitxer CuaConcurrent.h.

typedef T value_type

Tipus del objectes a la cua.

Definició a la línia 61 del fitxer CuaConcurrent.h.

Documentació del Constructor i el Destructor

CuaConcurrent ( )
inline

Constructor per defecte.

Definició a la línia 69 del fitxer CuaConcurrent.h.

CuaConcurrent ( const CuaConcurrent< T, TContenidor > &  c)
inline

Constructor de còpia.

Definició a la línia 74 del fitxer CuaConcurrent.h.

virtual ~CuaConcurrent ( )
inlinevirtual

Definició a la línia 82 del fitxer CuaConcurrent.h.

Documentació de les Funcions Membre

bool empty ( ) const
inline

Comprova si la cua està buida.

Remarca
Bloca

Definició a la línia 185 del fitxer CuaConcurrent.h.

Referenciat a ThreadPool::join().

bool pop ( reference  desti,
const milliseconds ms 
) throw (boost::thread_exception, boost::thread_interrupted)
inline

Extreu el primer objecte amb una espera màxima determinada.

Paràmetres
[out]destiValor extret
[in]msTemps d'espera màxim
Remarca
Bloca un màxim de ms milisegons
Retorna
true si s'ha extret un objecte, false si s'ha exhaurit el temps
Excepcions
boost::thread_interruptedSi el fil s'interromp mentre s'esperava
boost::thread_exceptionSi es produeix un altre tipus d'error
Mireu també
pop(reference)

Definició a la línia 95 del fitxer CuaConcurrent.h.

void pop ( reference  desti) throw (boost::thread_exception, boost::thread_interrupted)
inline

Extreu el primer objecte.

Paràmetres
[out]destiValor extret
Remarca
Bloca fins que hi hagi algun element
Mireu també
pop(reference,milliseconds)
Excepcions
boost::thread_interruptedSi el fil s'interromp mentre s'esperava
boost::thread_exceptionSi es produeix un altre tipus d'error

Definició a la línia 120 del fitxer CuaConcurrent.h.

void push ( const_reference  element)
inline

Encua un objecte.

Paràmetres
elementElement a encuar
Remarca
Bloca

Definició a la línia 137 del fitxer CuaConcurrent.h.

size_type size ( ) const
inline

Obté la mida de la cua (nombre d'elements encuats)

Remarca
Bloca

Definició a la línia 194 del fitxer CuaConcurrent.h.

Referenciat a ThreadPool::num_tasques().

bool try_pop ( reference  desti)
inline

Extreu de manera immediata o falla.

Si la cua no està buida ni blocada s'extreu un objecte de manera immediata.

Paràmetres
[out]destiValor extret
Retorna
true si s'ha pogut extreure un objecte, false si no

Definició a la línia 155 del fitxer CuaConcurrent.h.

bool try_push ( const_reference  element)
inline

Encua un objecte de manera immediata o falla.

Si la cua està blocada no s'encuarà

Paràmetres
elementObjecte a encuar
Retorna
true si s'ha pogut encuar, false si no

Definició a la línia 172 del fitxer CuaConcurrent.h.

Documentació de les Dades Membre

boost::condition_variable cond_
private

Variable de condició usada en l'extracció

Definició a la línia 234 del fitxer CuaConcurrent.h.

Referenciat a CuaConcurrent< tipus_tasca >::pop() i CuaConcurrent< tipus_tasca >::push().

TContenidor impl_
private
boost::mutex mtx_
mutableprivate

La documentació d'aquesta classe es va generar a partir del següent fitxer: