### 一、安裝pthreads-w32-2-8-0-release.exe
> 至于怎么下載這個exe還是自己去百度吧,CSDN上反正可以下載,而且有免費版本的,資源里面搜下就行了。
然后安裝這個就行了(按照下面的123來就行了)。

然后Pre-built.2這個文件夾有個include和lib,把它們分別拷貝到C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC這個目錄下面的include和lib下面。
### 二、 賣票的例子程序
~~~
#include "stdafx.h"
#include <pthread.h>
#include <stdio.h>
#include <Windows.h>
#pragma comment(lib, "pthreadVC2.lib")
// ticket count
int m_nTicket = 100;
// thread lock
pthread_mutex_t m_tMutex = PTHREAD_MUTEX_INITIALIZER;
void* thread_run(void* parm)
{
while(true)
{
//pthread_mutex_lock(&m_tMutex);
if (m_nTicket>0)
{
Sleep(1000);
printf("第%d號窗口賣出了第",pthread_self());
printf("%d張票。\n",m_nTicket);
m_nTicket--;
}else{
break;
}
//pthread_mutex_unlock(&m_tMutex);
}
return NULL;
}
int main()
{
pthread_t tid1;
pthread_t tid2;
// create two threads
pthread_create(&tid1, NULL, thread_run,NULL);
pthread_create(&tid2, NULL, thread_run,NULL);
/*// 加入pthread_join后,主線程會一直等待直到等待的線程結束自己才結束,使創建的線程有機會執行
// 調用pthread_self()函數可以獲得自身的線程號
pthread_join(pthread_self(),NULL);*/
getchar();
return 0;
}
~~~
嘿,兩個線程賣票的例子。
這里面涉及到線程的互斥,還需要自己去琢磨。
互斥就是兩個線程使用同一個變量的時候數據可能會發生異常,這時候就要加鎖了,那個數據只能讓一個線程使用。
可以自己試驗一下。
下面是調試的結果:

對了,如果編譯的時候發生這個錯誤:

在解壓出來的Pre-built.2\lib文件夾里面把這個pthreadVC2.dll復制到C:\Windows\SysWOW64這里面去,32位的就對應的復制到32位那個文件夾。
- 前言
- C++讀取配置文件
- 結構體內存對齊后所占內存空間大小的計算
- do{}while(0)的妙用
- Cocos2dx實現翻牌效果(CCScaleTo與CCOrbitCamera兩種方式)
- C++的error LNK2019: 無法解析的外部符號編譯錯誤
- Java使用JNI調用C++的完整流程
- strupr與strlwr函數的實現
- strcat函數實現
- Windows上VS使用pthread重溫經典多線程賣票(pthreads-w32-2-8-0-release.exe)(windows上使用pthread.h)
- pthread的pthread_join()函數理解實驗
- 順序存儲結構和鏈式存儲結構的選擇
- C語言冒泡排序
- VS看反匯編、寄存器、內存、堆棧調用來學習程序設計
- 快速排序
- C++的構造函數初始化列表
- fatal error C1083: 無法打開包括文件: “SDKDDKVer.h”: No such file or directory
- C++實現簡單的String類