賣票 多執行緒模擬賣票系統

2021-08-13 07:34:20 字數 1011 閱讀 4761

網上搶票,方便又高效,很舒服。應用多執行緒的同步執行可以模擬很多人搶票,而且不會發生衝突。下面,我們就來利用多執行緒來模擬一把。

#include 

#include

#include

int tickets = 100; //定義票數為全域性變數,所以執行緒都可訪問

pthread_mutex_t mutex; //定義互斥鎖

void delay() //自定義延遲函式,不可使用sleep

x--;

}}void *saleticket(void *arg)

printf("當前票數為:%d\n", cur_ticket);

delay(); //隨機延遲

cur_ticket--;

tickets = cur_ticket; //把當前票數返回給全域性變數,讓所有執行緒都知道

pthread_mutex_unlock(&mutex); //解鎖

}}int main()

; //定義5個執行緒id

int ret, i;

srand(time(null)); //初始化隨機函式

ret = pthread_mutex_init(&mutex, null); //初始化互斥鎖

if (0 != ret) //初始化失敗返回0

for (i= 0; i < 5; i++) //模擬5個執行緒同時執行

}for(i = 0; i < 5; i++)

pthread_mutex_destroy(&mutex); //最後銷毀互斥鎖

return

0;}

執行結果:

多執行緒賣票

前置條件 設定總票數 比如20張 開啟多個售票視窗同時進行火車票的售賣 這裡多個視窗代表 多執行緒.代表啟動了多少個執行緒物件 怎麼賣票 借助迴圈 重複賣票動作 使用 while死迴圈 每賣出1張 總票數 操作 什麼時候退出迴圈?發現賣完了,退出迴圈 開啟執行緒 執行 run方法內部邏輯 單執行緒賣...

Java 多執行緒模擬賣票示例

使用runnable介面建立三個子執行緒並起名為a,b,c模擬實現賣票操作,觀察結果。class mythread implements runnable塊 override public void run 方法2 sychronized方法 演算法 題目 海灘上有一堆桃子,五隻猴子來分。第一只猴子...

Java 多執行緒賣票

在實際應用中,我們經常用到多執行緒,如車站的售票系統,車站的各個售票口相當於各個執行緒。當我們做這個系統的時候可能會想到兩種方式來實現,繼承thread類或實現runnable介面,現在看一下這兩種方式實現的兩種結果。class mythread extends thread public void...