你提到的線程函數是一般函數還是生成線程的函數,或是用於運行特定函數的線程?
如果是在用VC中想用多個線程運行同樣的任務,而這些任務之間沒有通訊問題和內存共享的問題,那可以用下面的模板:
DWORD WINAPI TaskThreadProc(LPVOID)
{
// 獨立任務
// ...
}
void RunTaskUseMultiThread(int nThreadCount) // 線程個數爲nThreadCount
{
HANDLE* threads = new HANDLE[nThreadCount]; // 線程句柄,對線程進行狀態的控制時用到
DWORD* idThreads = new DWORD[nThreadCount]; // 線程id,給線程發消息時用到
int i;
for (i = 0; i < nThreadCount; i++)
{
threads[i] = CreateThread( NULL, 0, TaskThreadProc, NULL, CREATE_SUSPENDED, &idThreads[i]); // 創建線程
}
for (i = 0; i < nThreadCount; i++) // 由於生成的是CREATE_SUSPENDED的線程,所以這裏開始讓線程開始運行
ResumeThread(threads[i]);
WaitForMultipleObjects(nThreadCount, threads, TRUE, INFINITE); // 等待線程運行結束
for (i = 0; i < nThreadCount; i++)
CloseHandle(threads[j]); // 銷燬線程
delete [] threads;
delete [] idThreads;
}