前言
Pthread是由POSIX下的一套通用的線程庫,它在linux平臺下被廣泛的支持,而卻不支持windows平臺,但pthreads-w32爲此提供瞭解決方案,本文將簡單介紹如何在windows下安裝pthread-w32
安裝系統:windows7 64位系統
使用平臺:Microsoft Visual Studio 2008
配置軟件:Pthreads-w32
官網地址:http://sourceware.org/pthreads-win32/
下載地址:ftp://sourceware.org/pub/pthreads-win32/pthreads-w32-2-9-1-release.zip
(在這裏選擇了 pthreads-w32-2-9-1 版本)
配置方法
1、下載軟件解壓後,看到有以下三個文件夾
2、本次主要用到的是文件夾“Pre-built.2”下的“dll”文件夾(動態鏈接庫) ,“include”文件夾(頭文件)和 “lib”文件夾(靜態鏈接庫)
3、配置動態連接庫:將”dll”文件夾下有”x64”和”x86”兩個文件夾; 把”x64”文件夾下的兩個文件拷貝到C:\Windows\System32; 把”x86”文件夾下的五個文件,拷貝到C:\Windows\SysWOW64下。(注意:千萬不能將這些文件拷貝反位置,否則,程序運行時會提示說找不到對應的dll文件)
拷貝”x64”文件夾內容:
拷貝”x86”文件夾內容:
4、配置頭文件:直接把”include”文件夾中的三個文件直接拷貝到Visual Studio的默認路徑的頭文件中,即VC->include文件夾下。例如我的VS2008安裝在D盤,即將”include”中文件拷貝到 D:\VS2008\VC\include下。
5、配置靜態庫:根據需要,分別把”lib”文件夾下的”x86”文件夾的內容(或”x64”文件夾的內容)直接拷貝到Visual Studio的默認lib尋找路徑中,即VC->lib中。例如我的VS2008安裝在D盤,即庫文件拷貝到 D:\VS2008\VC\lib下。
測試代碼
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <assert.h>
#include <Windows.h>
#pragma comment(lib,"pthreadVC2.lib")
void *msrp_recv_thread(void *data)
{
int i = 0;
for(i = 1; i <= 3; i++)
{
printf("+++++++++this is thread method: %d \n", i);
}
return NULL;
}
int main()
{
int i = 0;
pthread_t recv_thread;
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
if(pthread_create(&(recv_thread), &attr, msrp_recv_thread, NULL) < 0)
return -1;
for (i = 1; i <= 3; i++)
{
printf("----------this is main method: %d \n", i);
Sleep(1);
}
pthread_attr_destroy(&attr);
getchar();
return 0;
}
注意
當出現:fatal error LNK1104: 無法打開文件“pthreadVC2.lib”時是代表無法鏈接到靜態庫,此時可以使用配置VS方法進行鏈接,具體如下:
右鍵項目,選擇屬性;然後在屬性頁面左側標籤欄中單擊”鏈接器”,並在”鏈接器”頁面中點擊“附加庫目錄”;最後在“附加庫目錄”中選擇存放靜態庫的路徑