POSIX标准包含了一系列用于多线程编程的API(pthread),除了win32之外,许多现代的操作系统都渐渐开始支持pthread。
我的配置:windows10+VS2010
一、下载pthread多线程库
1、pthread多线程库下载地址:ftp://sourceware.org/pub/pthreads-win32
里面有三种格式提供下载,exe、tag.gz、zip,选择一个较新的版本下载
2、这里我选择下载了一个zip的,下载完之后,进入到下载文件夹,将压缩包进行解压,会出现三个文件夹,Pre-built.2里面有2个文件夹使我们等下要用到的,包含文件include和库文件lib。
二、VS2010配置pthread多线程库
1、添加包含目录
新建一个空的C++工程项目,
项目->
属性->
配置属性->
VC++目录->
包含目录,
添加Pre-built.2里面的包含文件include文件
2、添加库目录
项目->属性->配置属性->VC++目录->库目录,添加Pre-built.2里面的库文件lib文件
3、添加附加依赖项
项目->属性->配置属性->链接器->输入->附加依赖项,添加Pre-built.2里面的库文件lib文件夹里的.lib文件(x86),最好是把路径也加上,不然可能会出现找xxx.lib这种情况,点击应用和确认,到这里就配置完了。
三、多线程测试代码
#include <iostream>
//< 必须的头文件
#include "pthread.h"
using namespace std;
#define NUM_THREADS 5
//< 线程的运行函数
void* say_hello(void* args)
{
cout << "Hello Runoob!" << endl;
return 0;
}
int main()
{
//< 定义线程的 id 变量,多个变量使用数组
pthread_t tids[NUM_THREADS];
for(int i = 0; i < NUM_THREADS; ++i)
{
//<参数依次是:创建的线程id,线程参数,调用的函数,传入的函数参数
int ret = pthread_create(&tids[i], NULL, say_hello, NULL);
if (ret != 0)
{
cout << "pthread_create error: error_code=" << ret << endl;
}
}
//<等各个线程退出后,进程才结束,否则进程强制结束了,线程可能还没反应过来;
pthread_exit(NULL);
}
【输出结果】