Fix mutex when building with no threads.
This commit is contained in:
parent
8cb6d5daa4
commit
d96179be75
2 changed files with 21 additions and 9 deletions
|
@ -40,7 +40,11 @@ void _global_unlock() {
|
|||
_global_mutex.unlock();
|
||||
}
|
||||
|
||||
#ifndef NO_THREADS
|
||||
|
||||
template class MutexImpl<std::recursive_mutex>;
|
||||
template class MutexImpl<std::mutex>;
|
||||
template class MutexLock<MutexImpl<std::recursive_mutex> >;
|
||||
template class MutexLock<MutexImpl<std::mutex> >;
|
||||
|
||||
#endif
|
||||
|
|
|
@ -71,9 +71,22 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
using Mutex = MutexImpl<std::recursive_mutex>; // Recursive, for general use
|
||||
using BinaryMutex = MutexImpl<std::mutex>; // Non-recursive, handle with care
|
||||
|
||||
extern template class MutexImpl<std::recursive_mutex>;
|
||||
extern template class MutexImpl<std::mutex>;
|
||||
extern template class MutexLock<MutexImpl<std::recursive_mutex> >;
|
||||
extern template class MutexLock<MutexImpl<std::mutex> >;
|
||||
|
||||
#else
|
||||
|
||||
template <class StdMutexType>
|
||||
class FakeMutex {
|
||||
|
||||
FakeMutex(){};
|
||||
};
|
||||
|
||||
template <class MutexT>
|
||||
class MutexImpl {
|
||||
public:
|
||||
_ALWAYS_INLINE_ void lock() const {}
|
||||
|
@ -87,14 +100,9 @@ public:
|
|||
explicit MutexLock(const MutexT &p_mutex) {}
|
||||
};
|
||||
|
||||
using Mutex = MutexImpl<FakeMutex>;
|
||||
using BinaryMutex = MutexImpl<FakeMutex>; // Non-recursive, handle with care
|
||||
|
||||
#endif // !NO_THREADS
|
||||
|
||||
using Mutex = MutexImpl<std::recursive_mutex>; // Recursive, for general use
|
||||
using BinaryMutex = MutexImpl<std::mutex>; // Non-recursive, handle with care
|
||||
|
||||
extern template class MutexImpl<std::recursive_mutex>;
|
||||
extern template class MutexImpl<std::mutex>;
|
||||
extern template class MutexLock<MutexImpl<std::recursive_mutex> >;
|
||||
extern template class MutexLock<MutexImpl<std::mutex> >;
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue