多執行緒的建立與結束 小例子火車票的售賣

2021-09-23 13:39:30 字數 993 閱讀 7565

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...