在這個**介紹了多執行緒的安全隱患
買票問題
//總票數
@property(nonatomic,assign)int tickets;
@end
-(void)touchesbegan:(nsset*)touches withevent:(uievent *)event
/*
加鎖,互斥鎖
加鎖,鎖定的**盡量少
加鎖範圍內的**,同意四件只執行乙個執行緒執行
互斥鎖的引數,任何繼承nsobject *物件都可以,
***這個鎖,所以得執行緒都能訪問到,而且是所有執行緒訪問的是同乙個鎖
*/-(void)saletickes
else}}
}
為什麼在開發中不常使用互斥鎖呢
一般買票的時候票數是通過伺服器訪問資料庫查詢的來的
除非你把互斥鎖加到伺服器上
就是你在手機應用上加鎖互斥鎖帶其他通過安卓手機或者**訪問的沒有互斥鎖
所以蘋果建議我們使用「自旋鎖」
@inte***ce
viewcontroller ()
//總票數
@property(nonatomic,assign)int tickets;
@property(atomic,strong)nsobject *obj;
// nonatomic 非原子屬性
//atomic 原子屬性預設屬性
//原子屬性就是針對多執行緒設計的,原子屬性實現單(執行緒)寫多(執行緒)讀
//因為寫的安全級別有錢更高,讀的要求低一點,可以多度幾次保證正確性
@end
@synthesize obj=_obj;
-(nsobject *)obj
/* 執行緒安全的概念
就是在多個執行緒同時執行的時候,能夠保證資源的資訊的準確性
「ui執行緒---主線程」
uikit絕大部分的類,都不是「執行緒安全」的
怎麼解決這個執行緒不安全的問題?
蘋果約定,所以程式的更新ui都在主線程進行 所以得ui都在主線程更新這就不會同時改變乙個資源
在主線程更新ui,的好處
1.只在主線程更新ui,一就不會出現多執行緒同時改變同乙個ui控制項
2.主線程的優先順序最高,也就意味著ui的更新優先順序高,會讓使用者感覺和流暢
*///atomic情況下,只要寫了set方法,getter也的重寫
-(void)setobj:(nsobject *)obj
}
多執行緒 互斥鎖
include include include handle mutex null srwlock g lock 改變乙個變數的時候需要鎖定 int num 6400000 在讀期間,值一直在變化,沒有鎖定。dword winapi reada void p i 使用acquiresrwlocksh...
多執行緒 互斥鎖
package com.yys.thread created by yys on 2017 9 25.兩個執行緒執行 t1如果能拿到02物件則t1執行緒執行完畢 t2如果能拿到o1物件則t2執行緒執行完畢 現在兩個執行緒分別鎖定了對方需要的物件 造成執行緒死鎖 public class testde...
多執行緒 互斥鎖
使用reentrantlock類的lock和unlock方法進行同步通訊 使用reentrantlock類的newcondition方法可以獲取condition物件,需要等待的時候使用conditionde await方法,喚醒的時候用signal方法,不同的執行緒使用不同的condition,這...