64,662
社区成员
发帖
与我相关
我的任务
分享
vector<thread> m_WorkThreadArray; // 一个线程容器
for (int i = 0; i < m_ThreadCount; i++)
{
WorkThreadParams* pWorkThreadParam = new WorkThreadParams;
pWorkThreadParam->m_pIOCP = this;
pWorkThreadParam->m_ThreadNo = i + 1;
m_WorkThreadArray.push_back(thread(_WorkerThread, pWorkThreadParam));
} // _WorkerThread : 工作者线程函数,pWorkThreadParam, 工作者线程函数参数
for (int i = 0; i < m_ThreadCount; i++)
{
PostQueuedCompletionStatus(m_hIOCompletionPort, 0, (DWORD)EXIT_CODE, NULL);
}
for (size_t i = 0; i < m_WorkThreadArray.size(); i++)
{
if (m_WorkThreadArray[i].joinable())
m_WorkThreadArray[i].join();
}
for (;;)
{
BOOL bIOCPReturn = GetQueuedCompletionStatus(
pIOCP->m_hIOCompletionPort,
&dwBytesTransfered,
(PULONG_PTR)&pSocketContext,
&pOverlapped,
INFINITE
);
if (EXIT_CODE == pSocketContext)
{
break;
}
return;
}