今天试了下在windows上调用pthread库,做个笔记先

 

首先下载pthread for windows的库文件:
http://www.cnblogs.com/peterxiang/admin/ftp://sources.redhat.com/pub/pthreads-win32/pthreads-w32-2-7-0-release.exe
这个自解压文件,压缩包里的pthreads.2目录是源码,Pre-built.2目录是编译所需的头文件和库文件。

新建一个VC项目
在项目属性中,将包含头文件的include文件夹添加到C/C++:General:Additional Include Directory
将pthreadVC2.lib添加到Linker:Input:Addistional Dependencies
将包含lib和dll的文件夹lib,添加进项目

此时已经可以编译通过了,但还不能执行,缺少dll文件。

执行该程序之前,还需要将pthreadVC2.dll拷贝到当前目录。

OK
=========================================================================================
定义变量
pthread_t threads[];
pthread_attr_t attr;
pthread_mutex_t count_mutex;
pthread_cond_t count_threshold_cv;

初始化及销毁
pthread_mutex_init(&count_mutex, NULL);
pthread_cond_init (&count_threshold_cv, NULL);

pthread_mutex_destroy(&count_mutex);
pthread_cond_destroy(&count_threshold_cv);

设置
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);


这两个函数是一对,如果线程A进入锁定代码区域之后,在未解锁的情况下,线程B再想进入的话,就会报错了。
pthread_mutex_lock(&count_mutex);
pthread_mutex_unlock(&count_mutex);


这两个函数是一对,wait:等待;signal:唤醒wait
pthread_cond_wait(&count_threshold_cv, &count_mutex);
pthread_cond_signal(&count_threshold_cv);