Fix mutex when building with no threads.

This commit is contained in:
Fabio Alessandrelli 2020-03-08 00:06:57 +01:00
parent 8cb6d5daa4
commit d96179be75
2 changed files with 21 additions and 9 deletions

View file

@ -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

View file

@ -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