#include "stdafx.h"
void* thread1(void* arg); // 线程函数
void* thread2(void* arg);
void* thread3(void* arg);
pthread_mutex_t gLock; // 线程锁
pthread_cond_t gCond; // 条件变量
volatile bool gStop; // 运行状态
int gArg; // 线程参数
int _tmain(int argc, _TCHAR* argv[])
{
pthread_t pt;
vector<pthread_t> vecIDs;
vector<void* (*)(void*)> vecFuns;
vecFuns.push_back(thread1);
vecFuns.push_back(thread2);
vecFuns.push_back(thread3);
// 创建多个线程
for (unsigned int i = 0; i < vecFuns.size(); i++)
{
pthread_mutex_lock(&gLock);
pthread_create(&pt, NULL, vecFuns[i], (void*)gArg);
vecIDs.push_back(pt);
pthread_cond_wait(&gCond, &gLock);
pthread_mutex_unlock(&gLock);
}
// 等待线程结束
int nResult = 0;
for (unsigned int i = 0; i < vecFuns.size(); i++)
{
pthread_join(vecIDs[i], (void**)nResult);
}
return 0;
}
多线程示例代码
最新推荐文章于 2022-06-14 17:48:16 发布