概述:如何在 windows 下不使用 C++ 标准库函数创建多线程并等待其执行状态

如下所示为一段创建多线程并等待执行完成的 demo。也可参考官方示例,使用 createthread 创建,创建线程 - Win32 apps | Microsoft Learn

int nCount = g_tOracleUser.size();
                HANDLE *pHandles = (HANDLE *)malloc(sizeof(HANDLE) * g_tOracleUser.size());
                if (pHandles)
                {
                    int iHandleIndex = 0;
                    for (auto & user : g_tOracleUser)
                    {
                        unsigned int dwThreadID = 0;
                        pHandles[iHandleIndex] = (HANDLE)_beginthreadex(NULL, 0, (_beginthreadex_proc_type)&_DoCheckThread, (LPVOID)user.GetString(), 0, &dwThreadID);
                        ATLTRACE(L"[%s] _beginthreadex _SendDataSyncThread , dwThreadID : %u", __FUNCTIONW__, dwThreadID);
                        iHandleIndex++;
                    }
 
                    WaitForMultipleObjects(nCount, pHandles, TRUE, INFINITE);
                    ATLTRACE(L"[%s] all check finish...count : %d", __FUNCTIONW__, g_outRiskUsers.size());
                    tRiskUsers = g_outRiskUsers;
                }
                else
                {
                    ATLTRACE(L"[%s] malloc handle failed!!!", __FUNCTIONW__);
                }