ACE - ACE_Recursive_Thread_Mutex, ACE_Thread_Mutex, ACE_Condition .

来源:互联网 发布:2017最新网络流行语 编辑:程序博客网 时间:2024/05/29 12:59
 

// Donot know when and where to use ACE_Thread_Mutex, I always use ACE_Recursive_Thread_Mutex.

 

1. define

ACE_Recursive_Thread_Mutex mMutex;

ACE_Condition<ACE_Recursive_Thread_Mutex> * mCondition;

 

 

mCondition = new ACE_Condition<ACE_Recursive_Thread_Mutex>(mMutex);

 

2. Usage

2.1 read

    mCondition->mutex().acquire_read();
    // to do your codes.
    mCondition->mutex().release();

2.2 write

    mCondition->mutex().acquire_write();

    // to do your codes.
    mCondition->mutex().release();

2.3 signal

    mCondition->broadcast();
    //mCondition->signal();

2.4 wait

    mStateCondition->wait();

    //or

    ACE_Time_Value ace_timeout(timeout);
    ACE_Time_Value ace_absolute_time(ACE_OS::gettimeofday() + ace_timeout);
    if (mStateCondition->wait(&ace_absolute_time) == -1)
    {

          // failed.
    }

 

 

3. deconstuctor

if (mCondition != 0)
{
    delete mCondition;
    mCondition=0;
}

4. Simplified mode

    ACE_Guard<ACE_Recursive_Thread_Mutex> guard(mMutex);

原创粉丝点击