|
|
|
@ -939,11 +939,11 @@ struct Mutex::Impl |
|
|
|
|
{ |
|
|
|
|
Impl() { InitializeCriticalSection(&cs); refcount = 1; } |
|
|
|
|
~Impl() { DeleteCriticalSection(&cs); } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void lock() { EnterCriticalSection(&cs); } |
|
|
|
|
bool trylock() { return TryEnterCriticalSection(&cs) != 0; } |
|
|
|
|
void unlock() { LeaveCriticalSection(&cs); } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CRITICAL_SECTION cs; |
|
|
|
|
int refcount; |
|
|
|
|
}; |
|
|
|
@ -956,26 +956,26 @@ struct Mutex::Impl |
|
|
|
|
{ |
|
|
|
|
Impl() { sl = OS_SPINLOCK_INIT; refcount = 1; } |
|
|
|
|
~Impl() {} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void lock() { OSSpinLockLock(&sl); } |
|
|
|
|
bool trylock() { return OSSpinLockTry(&sl); } |
|
|
|
|
void unlock() { OSSpinLockUnlock(&sl); } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
OSSpinLock sl; |
|
|
|
|
int refcount; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
#elif defined __linux__ |
|
|
|
|
#elif defined __linux__ && !defined ANDROID |
|
|
|
|
|
|
|
|
|
struct Mutex::Impl |
|
|
|
|
{ |
|
|
|
|
Impl() { pthread_spin_init(&sl, 0); refcount = 1; } |
|
|
|
|
~Impl() { pthread_spin_destroy(&sl); } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void lock() { pthread_spin_lock(&sl); } |
|
|
|
|
bool trylock() { return pthread_spin_trylock(&sl) == 0; } |
|
|
|
|
void unlock() { pthread_spin_unlock(&sl); } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pthread_spinlock_t sl; |
|
|
|
|
int refcount; |
|
|
|
|
}; |
|
|
|
@ -986,11 +986,11 @@ struct Mutex::Impl |
|
|
|
|
{ |
|
|
|
|
Impl() { pthread_mutex_init(&sl, 0); refcount = 1; } |
|
|
|
|
~Impl() { pthread_mutex_destroy(&sl); } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void lock() { pthread_mutex_lock(&sl); } |
|
|
|
|
bool trylock() { return pthread_mutex_trylock(&sl) == 0; } |
|
|
|
|
void unlock() { pthread_mutex_unlock(&sl); } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pthread_mutex_t sl; |
|
|
|
|
int refcount; |
|
|
|
|
}; |
|
|
|
@ -1001,14 +1001,14 @@ Mutex::Mutex() |
|
|
|
|
{ |
|
|
|
|
impl = new Mutex::Impl; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Mutex::~Mutex() |
|
|
|
|
{ |
|
|
|
|
if( CV_XADD(&impl->refcount, -1) == 1 ) |
|
|
|
|
delete impl; |
|
|
|
|
impl = 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Mutex::Mutex(const Mutex& m) |
|
|
|
|
{ |
|
|
|
|
impl = m.impl; |
|
|
|
@ -1023,10 +1023,10 @@ Mutex& Mutex::operator = (const Mutex& m) |
|
|
|
|
impl = m.impl; |
|
|
|
|
return *this; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void Mutex::lock() { impl->lock(); } |
|
|
|
|
void Mutex::unlock() { impl->unlock(); } |
|
|
|
|
bool Mutex::trylock() { return impl->trylock(); }
|
|
|
|
|
bool Mutex::trylock() { return impl->trylock(); } |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|