My Project
Public Member Functions | Protected Member Functions | Private Attributes
LibThread::Transactional Class Reference

Public Member Functions

 Transactional ()
 
void set_region (Region *region_init)
 
virtual ~Transactional ()
 
- Public Member Functions inherited from LibThread::SharedObject
 SharedObject ()
 
virtual ~SharedObject ()
 
void set_type (int type_init)
 
int get_type ()
 
void set_name (std::string &name_init)
 
void set_name (const char *s)
 
std::stringget_name ()
 
void incref (int by=1)
 
long decref ()
 
long getref ()
 
virtual BOOLEAN op2 (int op, leftv res, leftv a1, leftv a2)
 
virtual BOOLEAN op3 (int op, leftv res, leftv a1, leftv a2, leftv a3)
 

Protected Member Functions

int tx_begin ()
 
void tx_end ()
 

Private Attributes

Regionregion
 
Locklock
 

Detailed Description

Definition at line 286 of file shared.cc.

Constructor & Destructor Documentation

◆ Transactional()

LibThread::Transactional::Transactional ( )
inline

Definition at line 306 of file shared.cc.

306  :
308  }
#define NULL
Definition: omList.c:12

◆ ~Transactional()

virtual LibThread::Transactional::~Transactional ( )
inlinevirtual

Definition at line 317 of file shared.cc.

317 { if (!region && lock) delete lock; }

Member Function Documentation

◆ set_region()

void LibThread::Transactional::set_region ( Region region_init)
inline

Definition at line 309 of file shared.cc.

309  {
310  region = region_init;
311  if (region_init) {
312  lock = region_init->get_lock();
313  } else {
314  lock = new Lock();
315  }
316  }
Lock * get_lock()
Definition: shared.cc:212
Definition: thread.h:17

◆ tx_begin()

int LibThread::Transactional::tx_begin ( )
inlineprotected

Definition at line 291 of file shared.cc.

291  {
292  if (!region)
293  lock->lock();
294  else {
295  if (!lock->is_locked()) {
296  return 0;
297  }
298  }
299  return 1;
300  }
bool is_locked()
Definition: thread.h:68
void lock()
Definition: thread.h:46

◆ tx_end()

void LibThread::Transactional::tx_end ( )
inlineprotected

Definition at line 301 of file shared.cc.

301  {
302  if (!region)
303  lock->unlock();
304  }
void unlock()
Definition: thread.h:57

Field Documentation

◆ lock

Lock* LibThread::Transactional::lock
private

Definition at line 289 of file shared.cc.

◆ region

Region* LibThread::Transactional::region
private

Definition at line 288 of file shared.cc.


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