S3FC project page S3FC home page

Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

s3_mutex Class Reference

A mutex (MUTual EXclusion primitive) that is implemented as a wrapper around pthread_mutex_t. More...

#include <s3_mutex.h>

List of all members.

Public Methods

 s3_mutex ()
 Default constructor: instantiate a new mutex. More...

 ~s3_mutex ()
 Destructor: destroy the mutex primitive. More...

void lock () const
 Attempt to lock the mutex. More...

bool try_lock () const
 Attempt to lock the mutex, but immediately return a false if it is already locked. More...

void unlock () const
 Unlock the mutex (please read note about unlocking in s3_mutex class documentation.. More...


Protected Methods

 s3_mutex (const s3_mutex &src)
 Copy constructor: private for your convenience (thou shalt not copy construct an s3_mutex - deal with it). More...

s3_mutex & operator= (const s3_mutex &src)
 Neither shalt thou copy assign an s3_mutex. More...


Protected Attributes

pthread_mutex_t mutex
 LinuxThreads mutex primitive. More...


Friends

class s3_condition


Detailed Description

A mutex (MUTual EXclusion primitive) that is implemented as a wrapper around pthread_mutex_t.

Note: only the fast mutex kind is implemented.

A mutex is a primitive that is either in a locked or unlocked state and is always owned by a single process when it is locked. Otherwise it is not owned. The following operations are supported (assumes a fast mutex):

All the above operations are atomic.

Note: The following rules must be obeyed when calling unlock:

All the member functions are declared const and a semaphore can therefore always be used in a const context.

Definition at line 75 of file s3_mutex.h.


Constructor & Destructor Documentation

s3_mutex::s3_mutex  
 

Default constructor: instantiate a new mutex.

Definition at line 44 of file s3_mutex.cc.

References CONST_OVERRIDE_MUTEX_T, and mutex.

s3_mutex::~s3_mutex  
 

Destructor: destroy the mutex primitive.

Definition at line 51 of file s3_mutex.cc.

References CONST_OVERRIDE_MUTEX_T, mutex, and unlock.

s3_mutex::s3_mutex const s3_mutex &    src [protected]
 

Copy constructor: private for your convenience (thou shalt not copy construct an s3_mutex - deal with it).

Definition at line 63 of file s3_mutex.cc.


Member Function Documentation

void s3_mutex::lock   const
 

Attempt to lock the mutex.

If it is already locked, block until it becomes available and then lock it and return.

Definition at line 77 of file s3_mutex.cc.

References CONST_OVERRIDE_MUTEX_T, and mutex.

Referenced by s3_periodic_notifier::event_loop::add_client, s3_post_office::add_dst, s3_txport_tcp_rx_task::cleanup, s3_txport_tcp::clear_critical_by_id, s3_periodic_notifier::event_loop::clients, s3_txport_local::connect, s3_txport_tcp_rx_task::connected, s3_inplace_fifo_mux::create_vqueue, s3_message_box::deliver_msg, s3_txport_local::deregister_me, s3_inplace_fifo_mux::destroy_vqueue, s3_periodic_notifier::disable, s3_txport_tcp::disconnect_by_id, s3_txport_local::disconnect_by_id, s3_event_dispatcher::dispatch_event, s3_periodic_notifier::enable, s3_txport_tcp::get_client_id_list, s3_txport_local::get_client_id_list, s3_txport_tcp::get_ip_address_by_id, s3_message_box::get_msg, s3_txport_tcp::get_socket_by_id, s3_txport_tcp::is_connected_by_id, s3_txport_local::is_connected_by_id, s3_inplace_fifo_mux::is_started, s3_event_dispatcher::is_subscribed, s3_subscribable_fifo::is_subscribed_consumer, s3_subscribable_fifo::is_subscribed_producer, s3_thread_base::lock_state, s3_txport_local::main_loop, s3_periodic_notifier::event_loop::main_loop, s3_periodic_notifier::notify, s3_subscribable_fifo::notify_consumers, s3_subscribable_fifo::notify_producers, s3_txport_tcp::num_connections, s3_txport_local::num_connections, s3_txport_tcp::reap, s3_txport_local::register_me, s3_periodic_notifier::event_loop::remove_client, s3_post_office::remove_dst, s3_thread_base::request_terminate, s3_periodic_notifier::s3_periodic_notifier, s3_txport_local::send_metadata, s3_txport_tcp::set_critical_by_id, s3_periodic_notifier::set_period, s3_periodic_notifier::event_loop::set_period, s3_inplace_fifo_mux::set_queue, s3_txport_tcp::spawn_handler, s3_inplace_fifo_mux::start, s3_inplace_fifo_mux::stop, s3_periodic_notifier::subscribe, s3_subscribable_fifo::subscribe_consumer, s3_event_dispatcher::subscribe_handler, s3_subscribable_fifo::subscribe_producer, s3_thread_base::test_terminate, s3_periodic_notifier::unsubscribe, s3_subscribable_fifo::unsubscribe_consumer, s3_event_dispatcher::unsubscribe_handler, s3_subscribable_fifo::unsubscribe_producer, s3_log_buffer::write_to_device, and s3_periodic_notifier::~s3_periodic_notifier.

s3_mutex & s3_mutex::operator= const s3_mutex &    src [protected]
 

Neither shalt thou copy assign an s3_mutex.

Definition at line 70 of file s3_mutex.cc.

bool s3_mutex::try_lock   const
 

Attempt to lock the mutex, but immediately return a false if it is already locked.

If it is unlocked, it is locked as if lock was called.

Return values:
c  true Mutex was unlocked and is now locked by caller (proceeded like wait).
c  false Mutex was already locked (skirted the suspend).

Definition at line 87 of file s3_mutex.cc.

References CONST_OVERRIDE_MUTEX_T, and mutex.

Referenced by s3_thread_base::test_state.

void s3_mutex::unlock   const
 

Unlock the mutex (please read note about unlocking in s3_mutex class documentation..

Definition at line 116 of file s3_mutex.cc.

References CONST_OVERRIDE_MUTEX_T, and mutex.

Referenced by s3_periodic_notifier::event_loop::add_client, s3_post_office::add_dst, s3_txport_tcp_rx_task::cleanup, s3_txport_tcp::clear_critical_by_id, s3_periodic_notifier::event_loop::clients, s3_txport_local::connect, s3_txport_tcp_rx_task::connected, s3_inplace_fifo_mux::create_vqueue, s3_message_box::deliver_msg, s3_txport_local::deregister_me, s3_inplace_fifo_mux::destroy_vqueue, s3_periodic_notifier::disable, s3_txport_tcp::disconnect_by_id, s3_txport_local::disconnect_by_id, s3_event_dispatcher::dispatch_event, s3_periodic_notifier::enable, s3_txport_tcp::get_client_id_list, s3_txport_local::get_client_id_list, s3_txport_tcp::get_ip_address_by_id, s3_message_box::get_msg, s3_txport_tcp::get_socket_by_id, s3_txport_tcp::is_connected_by_id, s3_txport_local::is_connected_by_id, s3_inplace_fifo_mux::is_started, s3_event_dispatcher::is_subscribed, s3_subscribable_fifo::is_subscribed_consumer, s3_subscribable_fifo::is_subscribed_producer, s3_txport_local::main_loop, s3_periodic_notifier::event_loop::main_loop, s3_periodic_notifier::notify, s3_subscribable_fifo::notify_consumers, s3_subscribable_fifo::notify_producers, s3_txport_tcp::num_connections, s3_txport_local::num_connections, s3_txport_tcp::reap, s3_txport_local::register_me, s3_periodic_notifier::event_loop::remove_client, s3_post_office::remove_dst, s3_thread_base::request_terminate, s3_periodic_notifier::s3_periodic_notifier, s3_txport_local::send_metadata, s3_txport_tcp::set_critical_by_id, s3_periodic_notifier::set_period, s3_periodic_notifier::event_loop::set_period, s3_inplace_fifo_mux::set_queue, s3_txport_tcp::spawn_handler, s3_inplace_fifo_mux::start, s3_inplace_fifo_mux::stop, s3_periodic_notifier::subscribe, s3_subscribable_fifo::subscribe_consumer, s3_event_dispatcher::subscribe_handler, s3_subscribable_fifo::subscribe_producer, s3_thread_base::test_terminate, s3_thread_base::unlock_state, s3_periodic_notifier::unsubscribe, s3_subscribable_fifo::unsubscribe_consumer, s3_event_dispatcher::unsubscribe_handler, s3_subscribable_fifo::unsubscribe_producer, s3_log_buffer::write_to_device, ~s3_mutex, and s3_periodic_notifier::~s3_periodic_notifier.


Friends And Related Function Documentation

friend class s3_condition [friend]
 

Definition at line 78 of file s3_mutex.h.


Member Data Documentation

pthread_mutex_t s3_mutex::mutex [protected]
 

LinuxThreads mutex primitive.

Definition at line 83 of file s3_mutex.h.

Referenced by lock, s3_mutex, try_lock, unlock, s3_condition::wait, and ~s3_mutex.


The documentation for this class was generated from the following files:
Send comments to: s3fc@stonethree.com SourceForge Logo