windows下配置pthread
因为最近用到线程池,看了很久的C++11的线程并发,但是还是觉得自己不能快速掌握。所以还是用熟悉的pthread吧。有空再细致地学习一下C++11的新特性。
本机环境
- VS2010
- Windows10
参考http://blog.csdn.net/npuweiwei/article/details/8666373
下载pthread
地址http://sourceware.org/pthreads-win32/
我用的版本是 pthreads-w32-2-9-1-release.zip
解压后有三个文件夹
- Pre-built.2
- pthreads.2
- QueueUserAPCEx
我们要用的是第一个文件夹。
拷贝文件
下一步是把Pre-built.2对应的lib,include文件分别拷贝到你安装VS的路径下。
比如我的安装路径是
- C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib
- C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include
然后把dll文件对应的x86和x64文件分别拷贝到
- C:\Windows\System32
- C:\Windows\SysWOW64
在VS2010中配置
新建一个项目,比如叫Pthread_Test.
在Project ->Pthread_Test Properties -> Configuration Properties-> C/C++ -> General ->Additional Include Directories 中增加头文件路径。
在Project ->Pthread_Test Properties -> Configuration Properties-> Linker -> General-> Additional Library Directories 中增加库文件路径。我用的是x86库。
在Project ->Pthread_Test Properties -> Configuration Properties-> Linker -> Input ->Additional Dependencies中增加所依赖的库文件。这里我们使用的IDE是VS2010,所以我们使用pthreadVSE2.lib。各个库的不同之处在pthreads.2下的README文档中有介绍。
测试代码
下面是测试代码。
#include "stdafx.h"
#include <stdio.h>
#include <pthread.h>
#include <assert.h>
void* Function_t(void* Param);
int _tmain(int argc, _TCHAR* argv[])
{
pthread_t pid;
//pthread_tpid;
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_setscope(&attr,PTHREAD_SCOPE_PROCESS);
pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED);
pthread_create(&pid, &attr,Function_t, NULL);
printf("====\n");
getchar();
pthread_attr_destroy(&attr);
return 0;
}
void* Function_t(void* Param)
{
printf("Thread Starts.\n");
pthread_t myid = pthread_self();
printf("Thread ID=%d ", myid);
return NULL;
}