原文:http://www.cnblogs.com/coolqiyu/p/5693461.html
參考:http://blog.csdn.net/qianchenglenger/article/details/16907821
一、下載地址
ftp://sourceware.org/pub/pthreads-win32/pthreads-w32-2-9-1-release.zip
解壓后得到三個文件夾
二、安裝
平台:win7 + VS2013
1. 打開Pre-built.2,下面有三個文件夾:dll, include, lib及其它文件。
2. 先查看VS2013的相關屬性
項目—屬性—VC++目錄—包含目錄(include)/庫目錄(lib)
庫目錄: 庫文件的默認查找路徑,也就是宏值$(VC_LibraryPath_x86)
3. 拷貝include/lib
- Pre-built.2/include下的三個文件(pthread.h/sched.h/semaphore.h)放到 $(VC_IncludePath)下 [x64系統:C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include]
- Pre-built.2/lib下的兩個文件夾(x64/x86)放到 $(VC_LibraryPath_x86)下 [x64系統:C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib]
4. 拷貝動態鏈接庫
- Pre-built.2/dll/x64下的兩個文件放到C:\Windows\System32(32位程序)
- Pre-built.2/dll/x86下的五個文件放到C:\Windows\SysWOW64(64位程序)
(注意一下,千萬不能將這些文件拷貝反位置,否則,程序運行時會提示說找不到對應的dll文件。這些在網上的很多文章中都被忽略掉了,所以我們特別提出。)
三、例子
#include <stdio.h> #include <pthread.h> #include <assert.h> #pragma comment(lib,"x86/pthreadVC2.lib") void* Function_t(void* Param) { printf("我是線程! "); pthread_t myid = pthread_self(); printf("線程ID=%d ", myid); return NULL; } int main() { pthread_t pid; 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("======================================== "); getchar(); pthread_attr_destroy(&attr); return 0; }
1 #include <stdio.h> 2 #include <pthread.h> 3 #include <assert.h> 4 5 #pragma comment(lib,"x86/pthreadVC2.lib") 6 7 void* Function_t(void* Param) 8 { 9 printf("我是線程! "); 10 pthread_t myid = pthread_self(); 11 printf("線程ID=%d ", myid); 12 return NULL; 13 } 14 15 int main() 16 { 17 pthread_t pid; 18 pthread_attr_t attr; 19 pthread_attr_init(&attr); 20 pthread_attr_setscope(&attr, PTHREAD_SCOPE_PROCESS); 21 pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); 22 pthread_create(&pid, &attr, Function_t, NULL); 23 printf("======================================== "); 24 getchar(); 25 pthread_attr_destroy(&attr); 26 return 0; 27 }