NAME

ACE_Mutex_Token - Class that acquires, renews, and releases a process-local synchronization token.

SYNOPSIS

#include <ace/Local_Tokens.h>

class ACE_Mutex_Token : public ACE_Tokens { public: ACE_Mutex_Token (const ASYS_TCHAR* name); virtual ~ACE_Mutex_Token (void); virtual int acquire ( ACE_TPQ_Entry *caller, int ignore_deadlock, int notify ); virtual int tryacquire (ACE_TPQ_Entry *caller); virtual int renew (ACE_TPQ_Entry *caller, int requeue_position); virtual int release (ACE_TPQ_Entry *caller); void dump (void) const; virtual int type (void) const; virtual int owners (OWNER_STACK &o, const ASYS_TCHAR *id); virtual int is_waiting_for (const ASYS_TCHAR *id); virtual int is_owner (const ASYS_TCHAR *id); private: ACE_TOKEN_CONST::MUTEX lock_; };

DESCRIPTION

This file contains definitions for the following classes:

public: 7. ACE_Token_Proxy 8. ACE_Null_Token : public ACE_Token_Proxy 9. ACE_Local_Mutex : public ACE_Token_Proxy *. ACE_Local_RLock : public ACE_Local_Mutex &. ACE_Local_WLock : public ACE_Local_Mutex private: 1. ACE_TOKEN_CONST 3. ACE_TPQ_Entry b. ACE_TSS_TPQ_Entry c. ACE_TPQ_Iterator 4. ACE_Token_Proxy_Queue 5. ACE_Tokens 6. ACE_Mutex_Token : public ACE_Tokens 12. ACE_RW_Token : public ACE_Tokens a. ACE_Token_Name

Note that the locking classes defined in this file are *not* intended to be used as general-purpose synchronization mechanisms, such as mutexes or semaphores. Instead, you should use the ACE_Recursive_Thread_Mutex, ACE_Thread_Mutex, ACE_Thread_Semaphore, etc., that are defined in $ACE_ROOT/ace/Synch.h and $ACE_ROOT/ace/Synch_T.h or the ACE_Token that's defined in $ACE_ROOT/ace/Token.h.

Synchronization operations.

With acquire, renew, and release, the caller must be specified so that multiple proxies (e.g. ACE_Local_Mutex) can use the same token.
virtual int acquire (
    ACE_TPQ_Entry *caller,
    int ignore_deadlock,
    int notify
    );

virtual int tryacquire (ACE_TPQ_Entry *caller);

virtual int renew (ACE_TPQ_Entry *caller, int requeue_position);

virtual int release (ACE_TPQ_Entry *caller);

void dump (void) const;

virtual int type (void) const;

virtual int owners (OWNER_STACK &o, const ASYS_TCHAR *id);

virtual int is_waiting_for (const ASYS_TCHAR *id);

virtual int is_owner (const ASYS_TCHAR *id);

AUTHOR

Karl-Heinz Dorn kdorn@erlh.siemens.de, Douglas C. Schmidt schmidt@cs.wustl.edu, and Tim Harrison harrison@cs.wustl.edu

LIBRARY

ace