NAME
ACE_TSS_Keys -
Collection of in-use flags for a thread's TSS keys.
For internal use only by ACE_TSS_Cleanup; it is public because
some compilers can't use nested classes for template instantiation
parameters.
SYNOPSIS
#include <ace/OS.h>
class ACE_TSS_Keys
{
public:
ACE_TSS_Keys (void);
int test_and_set (const ACE_thread_key_t key);
int test_and_clear (const ACE_thread_key_t key);
private:
static void find (const u_int key, u_int &word, u_int &bit);
enum{ # if ACE_SIZEOF_LONG == 8 ACE_BITS_PER_WORD = 64, # elif ACE_SIZEOF_LONG == 4 ACE_BITS_PER_WORD = 32, # else # error ACE_TSS_Keys only supports 32 or 64 bit longs. # endif ACE_WORDS = (
ACE_DEFAULT_THREAD_KEYS - 1) / ACE_BITS_PER_WORD + 1 };
u_long key_bit_words_[ACE_WORDS];
};
DESCRIPTION
Wrapper around array of whether each key is in use. A simple
typedef doesn't work with Sun C++ 4.2.
PUBLIC MEMBERS
ACE_TSS_Keys (void);
Default constructor, to initialize all bits to zero (unused).
int test_and_set (const ACE_thread_key_t key);
Mark the specified key as being in use, if it was not already so marked.
Returns 1 if the had already been marked, 0 if not.
int test_and_clear (const ACE_thread_key_t key);
Mark the specified key as not being in use, if it was not already so
cleared. Returns 1 if the had already been cleared, 0 if not.
PRIVATE MEMBERS
static void find (const u_int key, u_int &word, u_int &bit);
For a given key, find the word and bit number that represent it.
u_long key_bit_words_[ACE_WORDS];
Bit flag collection. A bit value of 1 indicates that the key is in
use by this thread.
AUTHOR
Doug Schmidt schmidt@cs.wustl.edu
, Jesper S. M|ller
stophph@diku.dk
, and a cast of thousands...
The ACE_Sched_Priority type should be used for platform-
independent thread and process priorities, by convention.
int should be used for OS-specific priorities.
typedef for the _stat data structure
Giving unique ACE scoped names for some important
RTSignal-Related constants. Becuase sometimes, different
platforms use different names for these constants.
LIBRARY
ace