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 + -
显示快捷键?