ANNA Suite  2020b
Multipurpose development suite for Telco applications
Public Member Functions | Protected Member Functions | List of all members
anna::Semaphore Class Reference

#include <Semaphore.hpp>

Inheritance diagram for anna::Semaphore:
Inheritance graph
[legend]
Collaboration diagram for anna::Semaphore:
Collaboration graph
[legend]

Public Member Functions

 Semaphore (unsigned int count)
 
virtual ~Semaphore ()
 
void wait () noexcept(false)
 
bool tryWait () noexcept(false)
 
void signal () noexcept(false)
 
virtual std::string asString () const
 

Protected Member Functions

void lock () noexcept(false)
 
void unlock ()
 
- Protected Member Functions inherited from anna::Safe
 Safe ()
 

Detailed Description

Clase para facilitar el uso de semaforos.

Esta facilidad que nos ofrece el sistema operativo se suele usar para limitar el numero de accesos a un determinado recurso.

La funcionalidad de esta clase solo estara disponible en aplicaciones multithread.

Constructor & Destructor Documentation

◆ Semaphore()

anna::Semaphore::Semaphore ( unsigned int  count)

Constructor.

Parameters
countNumero de accesos simultaneos que permitimos sobre el recurso que queremos compartir.
modeModo de actuacion de esta instancia en modo ST cuando montamos una seccion critca sobre este objeto. En modo MT siempre sera Mode::Normal, es decir abre una seccion critica sobre este objeto, que bloqueara a cualquier otro thread que intente acceder a el.

◆ ~Semaphore()

virtual anna::Semaphore::~Semaphore ( )
virtual

Destructor.

Member Function Documentation

◆ asString()

virtual std::string anna::Semaphore::asString ( ) const
virtual

Devuelve una cadena con informacion relevante de esta instancia.

Returns
Una cadena con informacion relevante de esta instancia.

◆ lock()

void anna::Semaphore::lock ( )
inlineprotectedvirtualnoexcept

Marca el inicio del acceso seguro a este objeto.

Warning
Cada invocacion a este metodo debe tener su correspondiente llamada al metodo unlock. Es muy aconsejable delegar las llamadas a estos metodos en una instancia Guard.
Returns
Siempre devuelve true;

Implements anna::Safe.

84 { wait(); }
void wait() noexcept(false)
Here is the call graph for this function:

◆ signal()

void anna::Semaphore::signal ( )
noexcept

Decrementa la cuenta de utilizacion del recurso, con lo que algunos de los threads que puede haber esperando se desbloqueara.

◆ tryWait()

bool anna::Semaphore::tryWait ( )
noexcept

Comprueba si se ha alcanzado la cuenta maxima de accesos simultaneos y devolvera true si todavia es posible acceder sin quedar bloqueado o false en otro caso.

◆ unlock()

void anna::Semaphore::unlock ( )
inlineprotectedvirtual

Indica el final del acceso seguro iniciado al invocar lock.

Warning
Indica el final del acceso seguro iniciado al invocar lock. Es muy aconsejable delegar las llamadas a estos metodos en una instancia Guard.
Returns
Siempre devuelve true;

Implements anna::Safe.

92 { signal(); }
void signal() noexcept(false)
Here is the call graph for this function:

◆ wait()

void anna::Semaphore::wait ( )
noexcept

Notifica que desea acceder al recurso. Si se ha alcanzado la cuenta maxima de accesos simultaneos el thread que invoca a este metodo quedara bloqueado mientras que algun otro threads no invoque al metodo signal.

Cada llamada a este metodo debe tener su correspondiente llamada a signal.


The documentation for this class was generated from the following file: