執行緒互斥例項 火車票

2021-07-03 13:23:13 字數 1307 閱讀 9149

執行緒互斥:保證共享資料每次只能被乙個執行緒訪問,具有排他性.

多執行緒併發執行時,訪問共享資料時是無序的.當多個執行緒同時訪問(修改)同乙個資料時,可能會出現資料錯亂現象.此時需要執行緒互斥,而執行緒互斥需要乙個互斥鎖

互斥鎖:當某個執行緒訪問共享資料時,需要枷鎖,其他執行緒則處於等待狀態;訪問資料結束時,需要解鎖,所有執行緒可以繼續訪問資料.

這裡以典型例項火車票系統說明:

1.首先定義三個例項變數:

int _totalcount;    //火車票總數量int _shengyucount;  //剩餘票數

nslock *_lock; //互斥鎖,用於實現執行緒互斥

2.設定剩餘票數為100張,不同的火車站,或者代售點為不同的執行緒

//設定剩餘票數為100張

_shengyucount = 100;

//建立鎖

_lock = [[nslock alloc]init];

//執行緒1:火車站

nsthread * thread1 = [[nsthread alloc]initwithtarget:self selector:@selector(saletickets) object:nil];

thread1.name = @"火車站";

[thread1 start];

//執行緒2:代售點

nsthread * thread2 = [[nsthread alloc]initwithtarget:self selector:@selector(saletickets) object:nil];

thread2.name = @"代售點";

[thread2 start];

3.現在開始賣票,賣票在不同的子執行緒中執行,每個執行緒賣票過程中需要加鎖,賣票完成後解鎖,並修改剩餘票數

//賣票,在子執行緒中執行

-(void)saletickets

}

下面給出完整** :

#import "viewcontroller.h"

@inte***ce viewcontroller ()

@end

@implementation viewcontroller

- (void)viewdidload

//賣票,在子執行緒中執行

-(void)saletickets

}

python火車票票價 Python火車票機

我被困在乙個練習,我需要做乙個火車票機,但我只是乙個星期的練習python,我不知道如何開始。在 首先我得到了這個 stations schagen heerhugowaard alkmaar castricum zaandam amsterdam sloterdijk amsterdam cent...

火車票業務

msgcode msginfo 100請求成功 101引數無效 102簽名驗證失敗 103該ip沒有許可權訪問此介面 104請求過於頻繁,請稍後重試 999未知的失敗原因 201該訂單不存在 202當前訂單狀態不允許執行此操作 203當前時間不支援此服務 204坐席無效 205發車日期無效 206取...

火車票相關

火車票優惠時間段 每年的6月1日 9月30日,12月1日 次年3月31日 中國鐵路總公司關於進一步優化改簽 退票規則的通知 鐵路客票延長預售期後,為了最大限度方便旅客 最大限度讓旅客充分利用車票資源,中國鐵路總公司決定進一步優化退票 改簽規則,現公布如下,自2014年12月3日起施行。一 為了方便旅...