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

Public Member Functions

 SingularChannel ()
 
virtual ~SingularChannel ()
 
void send (string item)
 
string receive ()
 
long count ()
 
- 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)
 

Private Attributes

queue< stringq
 
Lock lock
 
ConditionVariable cond
 

Detailed Description

Definition at line 397 of file shared.cc.

Constructor & Destructor Documentation

◆ SingularChannel()

LibThread::SingularChannel::SingularChannel ( )
inline

Definition at line 403 of file shared.cc.

◆ ~SingularChannel()

virtual LibThread::SingularChannel::~SingularChannel ( )
inlinevirtual

Definition at line 404 of file shared.cc.

404{ }

Member Function Documentation

◆ count()

long LibThread::SingularChannel::count ( )
inline

Definition at line 423 of file shared.cc.

423 {
424 lock.lock();
425 long result = q.size();
426 lock.unlock();
427 return result;
428 }
queue< string > q
Definition: shared.cc:399
void lock()
Definition: thread.h:46
void unlock()
Definition: thread.h:57
return result
Definition: facAbsBiFact.cc:75

◆ receive()

string LibThread::SingularChannel::receive ( )
inline

Definition at line 411 of file shared.cc.

411 {
412 lock.lock();
413 while (q.empty()) {
414 cond.wait();
415 }
416 string result = q.front();
417 q.pop();
418 if (!q.empty())
419 cond.signal();
420 lock.unlock();
421 return result;
422 }
void wait()
Definition: thread.h:88
void signal()
Definition: thread.h:97

◆ send()

void LibThread::SingularChannel::send ( string  item)
inline

Definition at line 405 of file shared.cc.

405 {
406 lock.lock();
407 q.push(item);
408 cond.signal();
409 lock.unlock();
410 }

Field Documentation

◆ cond

ConditionVariable LibThread::SingularChannel::cond
private

Definition at line 401 of file shared.cc.

◆ lock

Lock LibThread::SingularChannel::lock
private

Definition at line 400 of file shared.cc.

◆ q

queue<string> LibThread::SingularChannel::q
private

Definition at line 399 of file shared.cc.


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