TFCweb
1.0.4 $Rev: 483 $
TFC Primavera 2012: Nucli d'un servidor web
|
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. |
Implementació d'una cua concurrent amb locking.
T | Tipus dels elements de la cua |
TContenidor | Tipus del contenidor utilitzat internament |
std::queue
. Com std::queue
es fa servir el patró decorador. Definició a la línia 55 del fitxer CuaConcurrent.h.
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.
|
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.
|
inline |
Constructor per defecte.
Definició a la línia 69 del fitxer CuaConcurrent.h.
|
inline |
Constructor de còpia.
Definició a la línia 74 del fitxer CuaConcurrent.h.
|
inlinevirtual |
Definició a la línia 82 del fitxer CuaConcurrent.h.
|
inline |
Comprova si la cua està buida.
Definició a la línia 185 del fitxer CuaConcurrent.h.
Referenciat a ThreadPool::join().
|
inline |
Extreu el primer objecte amb una espera màxima determinada.
[out] | desti | Valor extret |
[in] | ms | Temps d'espera màxim |
ms
milisegons true
si s'ha extret un objecte, false
si s'ha exhaurit el temps boost::thread_interrupted | Si el fil s'interromp mentre s'esperava |
boost::thread_exception | Si es produeix un altre tipus d'error |
Definició a la línia 95 del fitxer CuaConcurrent.h.
|
inline |
Extreu el primer objecte.
[out] | desti | Valor extret |
boost::thread_interrupted | Si el fil s'interromp mentre s'esperava |
boost::thread_exception | Si es produeix un altre tipus d'error |
Definició a la línia 120 del fitxer CuaConcurrent.h.
|
inline |
Encua un objecte.
element | Element a encuar |
Definició a la línia 137 del fitxer CuaConcurrent.h.
|
inline |
Obté la mida de la cua (nombre d'elements encuats)
Definició a la línia 194 del fitxer CuaConcurrent.h.
Referenciat a ThreadPool::num_tasques().
|
inline |
Extreu de manera immediata o falla.
Si la cua no està buida ni blocada s'extreu un objecte de manera immediata.
[out] | desti | Valor extret |
true
si s'ha pogut extreure un objecte, false
si no Definició a la línia 155 del fitxer CuaConcurrent.h.
|
inline |
Encua un objecte de manera immediata o falla.
Si la cua està blocada no s'encuarà
element | Objecte a encuar |
true
si s'ha pogut encuar, false
si no Definició a la línia 172 del fitxer CuaConcurrent.h.
|
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().
|
private |
Contenidor real.
Definició a la línia 233 del fitxer CuaConcurrent.h.
Referenciat a CuaConcurrent< tipus_tasca >::CuaConcurrent(), CuaConcurrent< tipus_tasca >::empty(), CuaConcurrent< tipus_tasca >::pop(), CuaConcurrent< tipus_tasca >::push(), CuaConcurrent< tipus_tasca >::size(), CuaConcurrent< tipus_tasca >::try_pop() i CuaConcurrent< tipus_tasca >::try_push().
|
mutableprivate |
Mutex usat en els bloquejos.
Definició a la línia 235 del fitxer CuaConcurrent.h.
Referenciat a CuaConcurrent< tipus_tasca >::CuaConcurrent(), CuaConcurrent< tipus_tasca >::empty(), CuaConcurrent< tipus_tasca >::pop(), CuaConcurrent< tipus_tasca >::push(), CuaConcurrent< tipus_tasca >::size(), CuaConcurrent< tipus_tasca >::try_pop() i CuaConcurrent< tipus_tasca >::try_push().