百度了好多教程,没有一个靠谱的,都是东复制西粘贴,凑成一片教程,根本无法实现,亲测之后决定自己写一篇
1.ftp://sourceware.org/pub/pthreads-win32
到上面下载
pthreads-w32-2-8-0-release.exe文件,选定文件夹后解压。
2.Pre-built.2
解压后该目录会多出三个文件夹:Pre-built.2,pthreads.2,QueueUserAPCEx。进入Pre-built.2在Project ->Pthread_ Properties -> Configuration Properties-> C/C++ -> General ->Additional Include Directories 中增加头文件路径(Pre-built.2下面的include)。
在Project ->Pthread_ Properties -> Configuration Properties-> Linker -> General-> Additional Library Directories 中增加库文件路径(Pre-built.2下面的lib)。
3.pthreadVC2.lib;pthreadVCE2.lib;pthreadVSE2.lib;
在Project ->Pthread_Test Properties -> Configuration Properties-> Linker -> Input ->Additional Dependencies中增加所依赖的库文件(pthreadVC2.lib;pthreadVCE2.lib;pthreadVSE2.lib;)。把三个都添加进去,虽然只需要一个,但是介于不知道vs的版本等原因,一概都添加进去。
4.测试代码
编译运行,如果弹出缺少“pthreadXXX.dll”,将pthread安装目录下的Pre-built.2\lib\pthreadXXX.dll 拷贝到 C:\Windows\SysWOW64下。
#include <pthread.h>
#include <stdio.h>
#define NUM_THREADS 5
void *PrintHello(void *threadid)
{
int tid;
tid = (int)threadid;
printf("Hello World! It's me, thread #%d!\n", tid);
pthread_exit(NULL);
}
int main (int argc, char *argv[])
{
pthread_t threads[NUM_THREADS];
int rc, t;
for(t=0; t<NUM_THREADS; t++){
printf("In main: creating thread %d\n", t);
rc = pthread_create(&threads[t], NULL, PrintHello, (void *)t);
if (rc){
printf("ERROR; return code from pthread_create() is %d\n", rc);
exit(-1);
}
}
system("pause");
pthread_exit(NULL);
}
5.打完收功。