Windows下使用Dev-C++开发基于pthread的多线程。

一、下载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,添加。)Windows下使用Dev-C++开发基于pthread的多线程。_第1张图片
2、点击"Tools” ---->“compiler options” —>“Directories” —>"Libraries"浏览到刚才解压的目录D:\DEV-CPP\Pthread\Pre-built.2\lib,添加
(点击“工具”→“编译选项”→“目录”→“库”,浏览到刚才解压的pthread目录,选择D:\DEV-CPP\Pthread\Pre-built.2\lib,添加。)
Windows下使用Dev-C++开发基于pthread的多线程。_第2张图片
四、如果出现“undefined reference to 'pthread_create”的错误,在编译器选项中要加 -lpthread参数
Windows下使用Dev-C++开发基于pthread的多线程。_第3张图片
下面是一个简单的线程调用的例子:

#include 
#include 
#include 


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;
}


你可能感兴趣的:(Windows下使用Dev-C++开发基于pthread的多线程。)