chxavmutex.h

来自「symbian 下的helix player源代码」· C头文件 代码 · 共 93 行

H
93
字号
/*****************************************************************************
 * chxavmutex.h
 * ------------
 *
 * Synopsis:
 * This class is a C++ wrapper for the pthreads mutex primitive.
 *
 * Target:
 * Symbian OS
 *
 *
 * (c) 1995-2003 RealNetworks, Inc. Patents pending. All rights reserved.
 *
 *****************************************************************************/

#ifndef _chxavmutex_h_
#define _chxavmutex_h_


// Symbian includes...
#include <e32base.h>
#include <e32cons.h>
#include <e32std.h>
#include "bsthread/thread_error.h"

//
// bsMutex class
//

class CHXAvMutex {
 public:
    friend class bsConditionVar;
    CHXAvMutex ();
    ~CHXAvMutex ();
    void Lock ();
   
    void Unlock ();
    bool TryLock ();
 private:

    CHXAvMutex (const CHXAvMutex& m);		// disallow copies
    void operator= (const CHXAvMutex& m);	// disallow copies
    RMutex m_cs;
};

//
// bsMutex methods
//
inline 
bsMutex::bsMutex ()
{
    // create a process-relative, local mutex
    TInt ret = m_cs.CreateLocal(); 

    if (ret != KErrNone)
	bsThreadError (ret);
}

inline
bsMutex::~bsMutex ()
{
    m_cs.Close();
}

inline
void bsMutex::Lock ()
{
    m_cs.Wait();
}

inline
void bsMutex::Unlock ()
{
    m_cs.Signal();
}

inline
bool bsMutex::TryLock ()
{
    //
    // XXXCBR -- this isn't right - we might get locked by another
    // thread after we check Count() but before we can Wait().
    //
    if (m_cs.Count() < 1)
	return false;
    else
	m_cs.Wait();

    return true;
}

#endif // _MUTEX_H_

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?