一、下载Windows版本的pthread
目前最新版本为:pthreads-w32-2-9-1-release.zip
二、解压pthread到指定目录
我选择的是D:\DEV-CPP\Pthread
完成后,该目录会多出三个文件夹:Pre-built.2 ,pthreads.2 , QueueUserAPCEx 。
三、配置Dev-C++编译选项
1、 点击"Tools" ---->“compiler options” —>“Directories” —>“C++Includes"浏览到刚才解压的目录D:\DEV-CPP\Pthread\Pre-built.2\include,添加
(点击“工具”→“编译选项”→“目录”→“c++包含文件”,浏览到刚才解压的pthread目录,选择D:\DEV-CPP\Pthread\Pre-built.2\include,添加。)
2、点击"Tools” ---->“compiler options” —>“Directories” —>"Libraries"浏览到刚才解压的目录D:\DEV-CPP\Pthread\Pre-built.2\lib,添加
(点击“工具”→“编译选项”→“目录”→“库”,浏览到刚才解压的pthread目录,选择D:\DEV-CPP\Pthread\Pre-built.2\lib,添加。)
四、如果出现“undefined reference to 'pthread_create”的错误,在编译器选项中要加 -lpthread参数
下面是一个简单的线程调用的例子:
#include <stdio.h>
#include <pthread.h>
#include <windows.h>
void * print_a(void *a){
int i;
for(i = 0;i < 10; i++){
Sleep(1000);
printf("first\n");
}
return NULL;
}//1号进程
void * print_b(void *b){
int i;
for(i=0;i<20;i++){
Sleep(1000);
printf("second\n");
}
return NULL;
}//2号进程
int main()
{
int aNum=5;
int bNum=3;
pthread_t threadPool[aNum+bNum];//创建一个线程池,大小为aNum+bNum
int i;
for(i = 0; i < aNum; i++){
pthread_t temp;
if(pthread_create(&temp, NULL, print_a, NULL) == -1){
printf("ERROR");
exit(1);
}
threadPool[i] = temp;
}//创建1号进程放入线程池
for(i = 0; i < bNum; i++){
pthread_t temp;
if(pthread_create(&temp, NULL, print_b, NULL) == -1){
printf("ERROR");
exit(1);
}
threadPool[i+aNum] = temp;
}//创建2号进程放入线程池
void * result;
for(i = 0; i < aNum+bNum; i++){
if(pthread_join(threadPool[i], &result) == -1){
printf("fail to recollect\n");
exit(1);
}
}//运行线程池
return 0;
}