phtread_t :一種新的資料型別,其定義是 typedef unsigned long int pthread_t
pthread_create:執行緒建立函式,其原型是 int pthread_create(phtread_t * thread,const phtread_arr_t* arr,void* (*start_routine)(void*),void* arg);第乙個引數是指向執行緒識別符號的指標,第二個引數是用來設定執行緒屬性,第三個引數是執行緒執行函式的起始位址,最後乙個引數是函式執行的引數
pthread_join 一般是主線程來呼叫,用來等待子執行緒退出,因為是等待,所以阻塞的,一般主線程會依次新增所有它建立的子執行緒
接下來是乙個用多執行緒售賣車票的例子
#include#include #include #pragma comment(lib, "pthreadvc2.lib")
/*模擬火車售票*/
int total_ticket_num = 20;
pthread_mutex_t mutex_x = pthread_mutex_initializer;
void* sell_ticket(void* arg)
pthread_mutex_unlock(&mutex_x);
} return 0;
}int main()
; for (int i = 0; i < 4; i++)
if (iret)
}sleep(20);
void* retval;
for (int i = 0; i < 4; i++)
printf("retval=%ld\n", (long*)retval);
} return 0;
}/*模擬火車售票*/
多執行緒賣火車票的問題
同步 塊 synchronized object 其中object為我們使用的同步鎖,對於繼承的方式,使用this或者建立乙個非靜態物件作為鎖是無用的,無法阻止錯誤資料的產生。所以我們使用static的物件 同步方法 public synchronized void method 由於同步方法的鎖使...
使用多執行緒實現賣火車票
1.使用多執行緒實現三個視窗同時售票,用繼承thread方式 package com public class deamo extends thread else catch interruptedexception e public static void main string args 執行後...
c 多執行緒,2個執行緒模擬賣火車票的小程式
如果遇到 createmutexw 不能將引數 3 從 const char 8 轉換為 lpcwstr 的錯誤 可以在vs2010中,將專案的字符集,從 使用unicode字符集 改為 使用多位元組字符集 include windows.h include iostream.h dword win...