如果是在用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;
}
多个线程调用同一个线程函数的方法
最新推荐文章于 2024-06-06 08:39:36 发布
本文介绍了一种在VC环境中利用多个线程并行执行相同任务的方法。通过使用CREATE_SUSPENDED标志创建线程并随后调用ResumeThread启动线程,确保了线程的安全启动。此外,还展示了如何通过WaitForMultipleObjects等待所有线程完成以及如何清理线程资源。
3826

被折叠的 条评论
为什么被折叠?



