NAME
ACE_SV_Semaphore_Simple -
This is a simple semaphore package that assumes there are
no race conditions for initialization (i.e., the order of
process startup must be well defined).
SYNOPSIS
#include <ace/SV_Semaphore_Simple.h>
class ACE_SV_Semaphore_Simple
{
public:
enum { ACE_CREATE = IPC_CREAT, ACE_OPEN = 0 };
ACE_SV_Semaphore_Simple (void);
ACE_SV_Semaphore_Simple (
key_t key,
int flags = ACE_SV_Semaphore_Simple::ACE_CREATE,
int initial_value = 1,
int nsems = 1,
int perms = ACE_DEFAULT_PERMS
);
ACE_SV_Semaphore_Simple (
const char *name,
int flags = ACE_SV_Semaphore_Simple::ACE_CREATE,
int initial_value = 1,
int nsems = 1,
int perms = ACE_DEFAULT_PERMS
);
~ACE_SV_Semaphore_Simple (void);
int open (
const char *name,
int flags = ACE_SV_Semaphore_Simple::ACE_CREATE,
int initial_value = 1,
int nsems = 1,
int perms = ACE_DEFAULT_PERMS
);
int open (
key_t key,
int flags = ACE_SV_Semaphore_Simple::ACE_CREATE,
int initial_value = 1,
int nsems = 1,
int perms = ACE_DEFAULT_PERMS
);
int close (void);
int remove (void) const;
int acquire (int n = 0, int flags = 0) const;
int acquire_read (int n = 0, int flags = 0) const;
int acquire_write (int n = 0, int flags = 0) const;
int tryacquire (int n = 0, int flags = 0) const;
int tryacquire_read (int n = 0, int flags = 0) const;
int tryacquire_write (int n = 0, int flags = 0) const;
int release (int n = 0, int flags = 0) const;
int op (int val, int semnum = 0, int flags = 0) const;
int op (sembuf op_vec[], int nsems) const;
int control (int cmd, semun arg, int semnum = 0) const;
int control (int cmd, int value = 0, int semnum = 0) const;
int get_id (void) const;
void dump (void) const;
ACE_ALLOC_HOOK_DECLARE;
protected:
key_t key_;
int internal_id_;
int sem_number_;
int init (key_t k = ACE_INVALID_SEM_KEY, int i = -1);
key_t name_2_key (const char *name);
};
Initialization and termination methods.
ACE_SV_Semaphore_Simple (void);
ACE_SV_Semaphore_Simple (
key_t key,
int flags = ACE_SV_Semaphore_Simple::ACE_CREATE,
int initial_value = 1,
int nsems = 1,
int perms = ACE_DEFAULT_PERMS
);
ACE_SV_Semaphore_Simple (
const char *name,
int flags = ACE_SV_Semaphore_Simple::ACE_CREATE,
int initial_value = 1,
int nsems = 1,
int perms = ACE_DEFAULT_PERMS
);
~ACE_SV_Semaphore_Simple (void);
int open (
const char *name,
int flags = ACE_SV_Semaphore_Simple::ACE_CREATE,
int initial_value = 1,
int nsems = 1,
int perms = ACE_DEFAULT_PERMS
);
int open (
key_t key,
int flags = ACE_SV_Semaphore_Simple::ACE_CREATE,
int initial_value = 1,
int nsems = 1,
int perms = ACE_DEFAULT_PERMS
);
Open or create one or more SV_Semaphores. We return 0 if all is
OK, else -1.
int close (void);
Close a ACE_SV_Semaphore, marking it as invalid for subsequent
operations...
int remove (void) const;
Remove all SV_Semaphores associated with a particular key. This
call is intended to be called from a server, for example, when it
is being shut down, as we do an IPC_RMID on the ACE_SV_Semaphore,
regardless of whether other processes may be using it or not.
Most other processes should use close() below.
Semaphore acquire and release methods.
int acquire (int n = 0, int flags = 0) const;
Wait until a ACE_SV_Semaphore's value is greater than 0, the
decrement it by 1 and return. Dijkstra's P operation, Tannenbaums
DOWN operation.
int acquire_read (int n = 0, int flags = 0) const;
Acquire a semaphore for reading.
int acquire_write (int n = 0, int flags = 0) const;
Acquire a semaphore for writing
int tryacquire (int n = 0, int flags = 0) const;
Non-blocking version of acquire.
int tryacquire_read (int n = 0, int flags = 0) const;
Try to acquire the semaphore for reading.
int tryacquire_write (int n = 0, int flags = 0) const;
Try to acquire the semaphore for writing.
int release (int n = 0, int flags = 0) const;
Increment ACE_SV_Semaphore by one. Dijkstra's V operation,
Tannenbaums UP operation.
Semaphore operation methods.
int op (int val, int semnum = 0, int flags = 0) const;
General ACE_SV_Semaphore operation. Increment or decrement by a
specific amount (positive or negative; amount can`t be zero).
int op (sembuf op_vec[], int nsems) const;
General ACE_SV_Semaphore operation on an array of SV_Semaphores.
Semaphore control methods.
int control (int cmd, semun arg, int semnum = 0) const;
int control (int cmd, int value = 0, int semnum = 0) const;
int get_id (void) const;
Get underlying internal id.
void dump (void) const;
Dump the state of an object.
ACE_ALLOC_HOOK_DECLARE;
Declare the dynamic allocation hooks.
AUTHOR
Doug Schmidt
LIBRARY
ace