큐가 256개 제한되 있고, 큐에 사용대기 데이터가 없으면
PostMessage로 다음에 다시 검사해서 보내려는데,
PostMessage하려면 동적할당을 해야 하는데, 그 때 메모리 복사되는게 1024 x 16임....
너무 큰게 복사가 되는거 같은데;;;
void Module::ProcTRQuery(const TRRequest& trRequest, void* pCustomData)
{
_TRData* pTRData = m_waitTRQueue.back();
m_waitTRQueue.pop();
pTRData->pData = pCustomData;
m_runningTRList.push_back(pTRData);
}
void Module::TRQuery(const TRRequest& trRequest, void* pCustomData)
{
if (false == m_waitTRQueue.empty())
{
ProcTRQuery(trRequest, pCustomData);
}
else
{
TRRequest* pTRRequest = new TRRequest(trRequest);
PostMessage(WMU_POST_TRQUERY, (WPARAM)pTRRequest, (LPARAM)pCustomData);
}
}
afx_msg LRESULT Module::OnPostTRQuery(WPARAM wParam, LPARAM lParam)
{
if (true == m_waitTRQueue.empty())
{
PostMessage(WMU_POST_TRQUERY, wParam, lParam);
return 0;
}
TRRequest* pTRRequest = reinterpret_cast<TRRequest*>(wParam);
void* pCustomData = reinterpret_cast<void*>(lParam);
ProcTRQuery(*pTRRequest, pCustomData);
delete pTRRequest;
return 0;
}
댓글 0