15,471
社区成员
发帖
与我相关
我的任务
分享
UINT CScanDlg::PortScan()
{
int port[60] = {0};
PortArrSet(port);
DWORD dwThrdParam;
CWinThread *pA = NULL;
HANDLE handle[60] = {0};
for(int i = 0; i < 60; i++)
{
dwThrdParam = (DWORD)port[i];
pA = AfxBeginThread(ThreadPortScan, &dwThrdParam);
handle[i] = pA->m_hThread;
Sleep(1);
}
WaitForMultipleObjects(60, handle, TRUE, INFINITE);
Sleep(1);
return 0;
}
#define MAX_THREAD_COUNT (60)
HANDLE hThread[MAX_THREAD_COUNT ] = {0};
CWinThread* pThread[MAX_THREAD_COUNT] = {0};
for(size_t i = 0; i != MAX_THREAD_COUNT; ++i)
{
pThread[i] = AfxBeginThread(ThreadPortScan, ... , CREATE_SUSPENDED, ...);
pThread->m_bAutoDelete = FALSE;
hThread[i] = pThread[i]->m_hThread;
pThread[i]->ResumeThread();
}
WaitForMultipleObjects(MAX_THREAD_COUNT, hThread, TRUE, INFINITE);
for(size_t i = 0; i != MAX_THREAD_COUNT; ++i)
{
CloseHandle(hThread[i]);
hThread[i] = NULL;
delete pThread[i];
pThread[i] = NULL;
}