46 lines
637 B
C++
46 lines
637 B
C++
// Copyright (c) 2011, NetEase Inc. All rights reserved.
|
|
//
|
|
// Author: rl
|
|
// Date: 2011/6/9
|
|
//
|
|
// Lock implemetation on posix like Mac OS X/Linux/FreeBSD
|
|
|
|
#include "lock.h"
|
|
|
|
#if defined(OS_POSIX)
|
|
|
|
#include <errno.h>
|
|
|
|
namespace nbase
|
|
{
|
|
|
|
NLock::NLock()
|
|
{
|
|
// In release, go with the default lock attributes.
|
|
pthread_mutex_init(&os_lock_, NULL);
|
|
}
|
|
|
|
NLock::~NLock()
|
|
{
|
|
pthread_mutex_destroy(&os_lock_);
|
|
}
|
|
|
|
bool NLock::Try()
|
|
{
|
|
int rv = pthread_mutex_trylock(&os_lock_);
|
|
return rv == 0;
|
|
}
|
|
|
|
void NLock::Lock()
|
|
{
|
|
pthread_mutex_lock(&os_lock_);
|
|
}
|
|
|
|
void NLock::Unlock()
|
|
{
|
|
pthread_mutex_unlock(&os_lock_);
|
|
}
|
|
|
|
} // namespace
|
|
|
|
#endif // OS_WIN
|