1 // ANNA - Anna is Not Nothingness Anymore //
3 // (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo //
5 // See project site at http://redmine.teslayout.com/projects/anna-suite //
6 // See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
9 #ifndef anna_core_mt_Safe_hpp
10 #define anna_core_mt_Safe_hpp
12 #include <anna/core/RuntimeException.hpp>
19 Clase de la que pueden heredar todas las clases seguras que vayan a usar las guardas (ver Guard).
26 Marca el inicio del acceso seguro a este objeto.
27 \warning Cada invocacion a este metodo debe tener su correspondiente llamada al metodo #unlock.
28 Es muy aconsejable delegar las llamadas a estos metodos en una instancia Guard.
30 virtual void lock() throw(RuntimeException) = 0;
33 Indica el final del acceso seguro iniciado al invocar #lock.
34 \warning Indica el final del acceso seguro iniciado al invocar #lock.
35 Es muy aconsejable delegar las llamadas a estos metodos en una instancia Guard.
37 virtual void unlock() throw() = 0;
42 \param mode Modo de actuacion de esta instancia en modo ST cuando montamos una
43 seccion critca sobre este objeto. En modo MT siempre sera Mode::Normal, es decir
44 abre una seccion critica sobre este objeto, que bloqueara a cualquier otro thread
45 que intente acceder a el.