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

Implementació del patró ThreadPool. Més...

#include <ThreadPool.h>

Tipus Públics

typedef CuaConcurrent
< tipus_tasca
tipus_cua_tasques
 Tipus de la cua de tasques.
typedef boost::function< void(void)> tipus_tasca
 Tipus de les tasques acceptades.

Mètodes públics

 ThreadPool (const size_t n_workers)
 Construeix el ThreadPool amb n_workers fils.
virtual ~ThreadPool ()
bool es_oberta () const
 Comprova si s'ha tancat.
void join ()
 Bloca el fil actual fins que terminin totes les tasques.
size_t num_tasques () const
 Obté el nombre de tasques pendents.
void programa (tipus_tasca t) throw (ErrorThreadPoolTancada)
 Programa una tasca t.
void tanca ()
 Es deixen d'acceptar tasques.
void termina ()
 Cancel·la les tasques pendents.

Mètodes Privats

void inicia ()
 Inicia els fils.

Atributs Privats

volatile bool marca_terminacio_
 Indica als fils que han de finalitzar immediatament.
const size_t n_threads_
 Nombre de fils.
bool tancada_
 Indica si s'accepten noves tasques.
tipus_cua_tasques tasques_
 Tasques programades.
std::vector< boost::thread * > threads_
 Fils.

Descripció Detallada

Implementació del patró ThreadPool.

En aquesta implementació un ThreadPool controla un nombre fix de fils treballadors. Aquests processen tasques a mida que se n'afegeixen i romanen a l'espera si no hi ha cap tasca. Si hi ha més tasques que fils, les últimes en arrivar es quedaran en espera fins que algun dels fils treballadors finalitzi la tasca que estigui executant.

Les tasques han de ser cridables (p.e. funcions o objectes funció) que no requereixin arguments.

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

Documentació de les Definicions de Tipus Membre

Tipus de la cua de tasques.

Definició a la línia 67 del fitxer ThreadPool.h.

typedef boost::function<void (void)> tipus_tasca

Tipus de les tasques acceptades.

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

Documentació del Constructor i el Destructor

ThreadPool ( const size_t  n_workers)
explicit

Construeix el ThreadPool amb n_workers fils.

Paràmetres
n_workersNombre de fils a crear
Remarca
Els fils s'inicien immediatament
Postcondició
Els n_workers fils s'han creat i estan executant-se a l'espera de tasques

Definició a la línia 85 del fitxer ThreadPool.cc.

Referències ThreadPool::inicia().

~ThreadPool ( )
virtual

Documentació de les Funcions Membre

bool es_oberta ( ) const
inline

Comprova si s'ha tancat.

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

Referències ThreadPool::tancada_.

void inicia ( )
private

Inicia els fils.

Definició a la línia 108 del fitxer ThreadPool.cc.

Referències ThreadPool::marca_terminacio_, ThreadPool::n_threads_, ThreadPool::tasques_ i ThreadPool::threads_.

Referenciat a ThreadPool::ThreadPool().

void join ( )
size_t num_tasques ( ) const
inline

Obté el nombre de tasques pendents.

Definició a la línia 111 del fitxer ThreadPool.h.

Referències CuaConcurrent< T, TContenidor >::size() i ThreadPool::tasques_.

void programa ( tipus_tasca  t) throw (ErrorThreadPoolTancada)

Programa una tasca t.

Excepcions
ErrorThreadPoolTancadaSi s'intenta programar una tasca un cop s'ha tancat l'objecte
Remarca
Possibles tipus de t: funció, objecte funció o objecte funció obtingut amb std::mem_fn o boost::bind per exemple.
Mireu també
tanca()
termina()

Definició a la línia 99 del fitxer ThreadPool.cc.

Referenciat a executa().

void tanca ( )

Es deixen d'acceptar tasques.

Definició a la línia 115 del fitxer ThreadPool.cc.

Referències ThreadPool::tancada_.

Referenciat a ThreadPool::join() i ThreadPool::termina().

void termina ( )

Cancel·la les tasques pendents.

Remarca
Retorna immediatament

Definició a la línia 132 del fitxer ThreadPool.cc.

Referències ThreadPool::marca_terminacio_ i ThreadPool::tanca().

Referenciat a executa(), ThreadPool::join(), signal_callback_posix() i ThreadPool::~ThreadPool().

Documentació de les Dades Membre

volatile bool marca_terminacio_
private

Indica als fils que han de finalitzar immediatament.

Definició a la línia 122 del fitxer ThreadPool.h.

Referenciat a ThreadPool::inicia(), ThreadPool::join() i ThreadPool::termina().

const size_t n_threads_
private

Nombre de fils.

Definició a la línia 118 del fitxer ThreadPool.h.

Referenciat a ThreadPool::inicia() i ThreadPool::~ThreadPool().

bool tancada_
private

Indica si s'accepten noves tasques.

Definició a la línia 121 del fitxer ThreadPool.h.

Referenciat a ThreadPool::es_oberta() i ThreadPool::tanca().

tipus_cua_tasques tasques_
private

Tasques programades.

Mireu també
programa()

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

Referenciat a ThreadPool::inicia(), ThreadPool::join() i ThreadPool::num_tasques().

std::vector< boost::thread * > threads_
private

Fils.

Definició a la línia 119 del fitxer ThreadPool.h.

Referenciat a ThreadPool::inicia(), ThreadPool::join() i ThreadPool::~ThreadPool().


La documentació d'aquesta classe es va generar a partir dels següents fitxers: