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,添加。)在这里插入图片描述
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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值