My Project
Loading...
Searching...
No Matches
LibThread::SingularSyncVar Class Reference

Public Member Functions

 SingularSyncVar ()
 
virtual ~SingularSyncVar ()
 
void acquire ()
 
void release ()
 
void wait_init ()
 
leftv get ()
 
void update (leftv val)
 
int write (string item)
 
string read ()
 
int check ()
 
- 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::string & get_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)
 

Private Attributes

string value
 
int init
 
Lock lock
 
ConditionVariable cond
 

Detailed Description

Definition at line 426 of file shared.cc.

Constructor & Destructor Documentation

◆ SingularSyncVar()

LibThread::SingularSyncVar::SingularSyncVar ( )
inline

Definition at line 433 of file shared.cc.

◆ ~SingularSyncVar()

virtual LibThread::SingularSyncVar::~SingularSyncVar ( )
inlinevirtual

Definition at line 434 of file shared.cc.

434{ }

Member Function Documentation

◆ acquire()

void LibThread::SingularSyncVar::acquire ( )
inline

Definition at line 435 of file shared.cc.

435 {
436 lock.lock();
437 }

◆ check()

int LibThread::SingularSyncVar::check ( )
inline

Definition at line 474 of file shared.cc.

474 {
475 lock.lock();
476 int result = init;
477 lock.unlock();
478 return result;
479 }
return result

◆ get()

leftv LibThread::SingularSyncVar::get ( )
inline

Definition at line 445 of file shared.cc.

445 {
446 if (value.size() == 0) return NULL;
448 }
leftv from_string(std::string &str)
Definition lintree.cc:854
#define NULL
Definition omList.c:12

◆ read()

string LibThread::SingularSyncVar::read ( )
inline

Definition at line 466 of file shared.cc.

466 {
467 lock.lock();
468 while (!init)
469 cond.wait();
470 string result = value;
471 lock.unlock();
472 return result;
473 }

◆ release()

void LibThread::SingularSyncVar::release ( )
inline

Definition at line 438 of file shared.cc.

438 {
439 lock.unlock();
440 }

◆ update()

void LibThread::SingularSyncVar::update ( leftv val)
inline

Definition at line 449 of file shared.cc.

449 {
451 init = 1;
452 cond.broadcast();
453 }
std::string to_string(leftv val)
Definition lintree.cc:843

◆ wait_init()

void LibThread::SingularSyncVar::wait_init ( )
inline

Definition at line 441 of file shared.cc.

441 {
442 while (!init)
443 cond.wait();
444 }

◆ write()

int LibThread::SingularSyncVar::write ( string item)
inline

Definition at line 454 of file shared.cc.

454 {
455 int result = 0;
456 lock.lock();
457 if (!init) {
458 value = item;
459 init = 1;
460 cond.broadcast();
461 result = 1;
462 }
463 lock.unlock();
464 return result;
465 }

Field Documentation

◆ cond

ConditionVariable LibThread::SingularSyncVar::cond
private

Definition at line 431 of file shared.cc.

◆ init

int LibThread::SingularSyncVar::init
private

Definition at line 429 of file shared.cc.

◆ lock

Lock LibThread::SingularSyncVar::lock
private

Definition at line 430 of file shared.cc.

◆ value

string LibThread::SingularSyncVar::value
private

Definition at line 428 of file shared.cc.


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