1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
template<class TVariable>
class ObjetPartage
{
typedef ObjetPartage<TVariable> this_type;
public:
ObjetPartage(TVariable &vinit_)
:variable(vinit_)
{
}
TVariable get_variable()const
{
CSingleLock lock(&m_mutex,TRUE);
TVariable retour(variable);
return retour;
}
void set_variable(TVariable new_val_)
{
CSingleLock lock(&m_mutex,TRUE);
// ok
variable=new_val_;
}
private:
// non copiable :
ObjetPartage(this_type const&);// ne pas definir
this_type& operator=(this_type const&);// ne pas definir
private:
mutable CMutex m_mutex;
TVariable &variable;
}; |
Partager