1 下载库

建议大家下载:ftp://sources.redhat.com/pub/pthreads-win32/pthreads-w32-2-7-0-release.exe这个自解压文件,压缩包里的pthreads.2目录是源码,Pre-built.2目录是编译所需的头文件和库文件。

 

2 vc的设置

添加执行库、目录、库文件的路径;

 

3 测试

编写程序,添加项目中库文件,编译运行即可。

//main.cpp
#include <stdio.h>
#include 
<pthread.h>
#include 
<assert.h>

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 1;
}


2:在VC下使用POSIX标准的线程

POSIX下的很多东西我都很喜欢,其中就包括pthread。不过跟使用socket面临同样的问题,在Linux下调试程序并没有VC下方便。所以,希望在VC下可以pthread写东西,调试没有问题的话可以在各个平台下使用。

在网上找了一些资料,发现VC下使用pthread也是异常简单啊,呵呵,记录下来,备用~~~

有一个叫做POSIX Threads for Win32的项目,专门为win32开发了一个pthread的lib,利用它,可以很方便的在win32下实现pthread的应用。我这里使用到的是2.7.0版本的POSIX Threads for Win32,下载地址:ftp://sources.redhat.com/pub/pthreads-win32/pthreads-w32-2-7-0-release.exe

将下载到的exe解压之后,会得到三个目录:


其中,Pre-built.2中是已经编译好的lib以及dll,同时包含了一些必要的头文件。将其中的include文件夹和lib文件夹copy到VC的安装目录下,例如,我的是VC6.0的环境,默认安装,则,需要copy到:C:\Program Files\Microsoft Visual Studio\VC98

接着,在编程的时候,引入pthreadVC2.lib即可:

   1: #pragma comment(lib, "pthreadVC2.lib")

 

剩下的步骤,就和Linux下一样了,尽情享用吧^_^