7 m_nMinElems(nMinElems), m_nMaxElems(nMaxElems)
10 InitializeCriticalSection(&m_hMemSafe);
15 m_apMemory.push_back(sRingItem);
21 DeleteCriticalSection(&m_hMemSafe);
22 for (
int i = 0; i < m_apMemory.size(); ++i)
23 free(m_apMemory[i].pMemory);
29 EnterCriticalSection(&m_hMemSafe);
30 if (nIdx < m_apMemory.size())
32 pHead = m_apMemory[nIdx].pMemory;
33 m_apMemory[nIdx].nCount += 1;
35 LeaveCriticalSection(&m_hMemSafe);
42 EnterCriticalSection(&m_hMemSafe);
43 if (nIdx < m_apMemory.size())
44 pHead = m_apMemory[nIdx].pMemory;
45 LeaveCriticalSection(&m_hMemSafe);
51 EnterCriticalSection(&m_hMemSafe);
52 if (nIdx < m_apMemory.size())
53 m_apMemory[nIdx].nCount -= 1;
54 LeaveCriticalSection(&m_hMemSafe);
61 EnterCriticalSection(&m_hMemSafe);
62 for (
int i = 0; i < m_apMemory.size(); ++i)
64 if (!m_apMemory[i].nCount)
67 pHead = m_apMemory[i].pMemory;
76 *pnIdx = (int)m_apMemory.size();
77 m_apMemory.push_back(sRingItem);
79 LeaveCriticalSection(&m_hMemSafe);
void * GetIndexMemory(int nIdx)
CMemRing(__int64 ll_size, int nMinElems, int nMaxElems)
void * GetFree(int *pnIdx)
void ReleaseIndex(int nIdx)
void * GetIndexMemoryUnsafe(int nIdx)