Minor fixes

Libmixer: additional patterns
This commit is contained in:
Nekotekina
2014-03-29 02:50:05 +04:00
parent 70cc2494aa
commit 689c41ccb3
9 changed files with 316 additions and 102 deletions
+8 -2
View File
@@ -1,15 +1,21 @@
#include <stdafx.h>
#include <Utilities/SMutex.h>
__forceinline void SM_Sleep()
{
Sleep(1);
}
#ifdef _WIN32
__declspec(thread)
#else
thread_local
#endif
size_t g_this_thread_id = 0;
__forceinline size_t SM_GetCurrentThreadId()
{
return std::hash<std::thread::id>()(std::this_thread::get_id());
return g_this_thread_id ? g_this_thread_id : g_this_thread_id = std::hash<std::thread::id>()(std::this_thread::get_id());
}
__forceinline u32 SM_GetCurrentCPUThreadId()
+3 -3
View File
@@ -21,7 +21,7 @@ template
<
typename T,
u64 free_value = 0,
u64 dead_value = ~0,
u64 dead_value = 0xffffffff,
void (*wait)() = SM_Sleep
>
class SMutexBase
@@ -139,7 +139,7 @@ class SMutexLockerBase
public:
const T tid;
SMutexLockerBase(SMutexBase<T>& _sm)
__forceinline SMutexLockerBase(SMutexBase<T>& _sm)
: sm(_sm)
, tid(get_tid())
{
@@ -155,7 +155,7 @@ public:
sm.lock(tid);
}
~SMutexLockerBase()
__forceinline ~SMutexLockerBase()
{
if (tid) sm.unlock(tid);
}
+5 -5
View File
@@ -3,7 +3,7 @@
template<typename T, u32 SQSize = 666>
class SQueue
{
SMutex m_mutex;
SMutexGeneral m_mutex;
u32 m_pos;
u32 m_count;
T m_data[SQSize];
@@ -40,7 +40,7 @@ public:
}
{
SMutexLocker lock(m_mutex);
SMutexGeneralLocker lock(m_mutex);
if (m_count >= SQSize) continue;
@@ -71,7 +71,7 @@ public:
}
{
SMutexLocker lock(m_mutex);
SMutexGeneralLocker lock(m_mutex);
if (!m_count) continue;
@@ -96,7 +96,7 @@ public:
void Clear()
{
SMutexLocker lock(m_mutex);
SMutexGeneralLocker lock(m_mutex);
m_count = 0;
}
@@ -120,7 +120,7 @@ public:
}
{
SMutexLocker lock(m_mutex);
SMutexGeneralLocker lock(m_mutex);
if (m_count) break;
}
}