国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

NSThread基礎使用

2019-11-14 20:22:47
字體:
來源:轉載
供稿:網友
1.創(chuàng)建和啟動線程
 
一個NSThread對象就代表一條線程;
 
創(chuàng)建,啟動線程
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil];[thread start];
2.線程相關用法
 
主線程相關用法
1 + (NSThread *)mainThread;2 - (BOOL)isMainThread;3 + (BOOL)isMainThread;
獲得當前線程
1 NSThread *current = [NSThread currentThread];
 
線程的調度優(yōu)先級
1 + (double)threadPRiority;2 + (BOOL)setThreadPriority:(double)p;3 - (double)threadPriority;4 - (BOOL)setThreadPriority:(double)p;
調度的優(yōu)先級取值范圍是0.0 ~ 1.0, 默認0.5, 值越大, 優(yōu)先級越高;
 
線程的名字
1 - (void) setName:(NSString *)n;2 - (NSString *)name;
創(chuàng)建線程后自動啟動線程
1 [NSThread detachNewThreadSelector:@selector(run) toTarget:self withObject:nil];
 
隱式創(chuàng)建線程并啟動線程
1 [self performSelectorInBackground:@selector(run) withObject:nil];
 
3.線程的五種狀態(tài)
新建(New) 就緒(Runnable) 運行(Running) 阻塞(Blocked) 死亡(Dead)
 
4.控制線程狀態(tài)
啟動線程
1 - (void)start;
 
阻塞線程
1 + (void)sleepUntilDate:(NSDate *)date;2 + (void)sleepForTimeInterval:(NSTimeInterval)ti;
 
強制停止線程
1 + (void)exit;
 
5.多線程的安全隱患
資源共享:多個線程訪問同一塊資源;
處理共享數(shù)據(jù)時很容易引發(fā)數(shù)據(jù)錯亂和數(shù)據(jù)安全問題;
 
6.安全隱患解決--互斥鎖
 
互斥鎖使用格式:@synchroniazed(鎖對象) { 代碼 }
 
互斥鎖的優(yōu)缺點:
優(yōu)點:能有效防止因多線程搶奪資源造成的數(shù)據(jù)安全問題;
缺點:大量消耗CPU資源;
 
互斥鎖的使用前提:多條線程搶奪同一塊資源;
 
相關術語:線程同步;
線程同步的含義:多條線程按順序執(zhí)行任務;
互斥鎖就是使用了線程同步技術;
 
7.原子屬性和非原子屬性
 
OC在定義屬性時有nonatomic和atomic兩種選擇:
atomic:原子屬性,為setter方法加鎖(默認就是atomic);
nonatomic:非原子屬性,不會為setter方法加鎖;
 
atomic加鎖原理:
1 @property (assign, atomic) int age;2 - (void)setAge:(int)age3 {4 @synchronized(self) {5     _age = age;6   }7 }
 
nonatomic和atomic對比
nonatomic:線程安全,需要消耗大量的資源;
atomic:線程不安全,適合內存較小的移動設備;
 
iOS的開發(fā)建議:
所有屬性都定義為nonatomic;
盡量避免多線程搶奪同一塊資源;
盡量將加鎖,資源搶奪的業(yè)務邏輯都交給服務器端處理,減少移動客戶端的壓力;
 
8.線程間通信
 
一個線程傳遞數(shù)據(jù)給另一個線程;
一個線程執(zhí)行完任務,轉到另一個線程繼續(xù)執(zhí)行任務;
 
線程之間常用的通信方法
1 - (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait;2 - (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(id)arg waitUntilDone:(BOOL)wait;

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 襄城县| 洛宁县| 洪湖市| 南皮县| 德庆县| 平度市| 临沧市| 剑川县| 汾阳市| 盱眙县| 昌邑市| 玉环县| 孟村| 东安县| 巢湖市| 聊城市| 霍林郭勒市| 神木县| 海阳市| 石泉县| 乌海市| 淮阳县| 木里| 曲沃县| 玉环县| 嘉定区| 东乡| 介休市| 南和县| 大安市| 香河县| 梅河口市| 随州市| 保康县| 吉林省| 榆中县| 贵南县| 三河市| 徐水县| 马龙县| 米林县|