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); }
【输出结果】