IOS多線程
-
IOS多線程的開銷
- 內核數據結構-大約1KB。
- 棧空間-子線程512KB,主線程1MB。(通過線程對象可以使用
-setStackSize:
函數設置線程空間,但必須是4K的倍數,而且最小是16K) - 創建線程大約需要90毫秒。
-
什么是主線程?
- iOS程序運行后,會默認開啟一條線程,這條線程稱為
主線程
或者叫做UI線程
。
- iOS程序運行后,會默認開啟一條線程,這條線程稱為
-
主線程(UI線程)的作用?
- 顯示或者刷新UI界面。
- 處理UI事件.(點擊事件、滾動事件、拖拽事件等)
-
主線程的使用注意事項
- 不要將耗時的操作放到主線程中。
-
互斥鎖(線程同步技術 )
- 互斥鎖
@synchronized
的使用格式
@synchronized(鎖對象)
- 互斥鎖
{
//鎖定的代碼
}
//使用的的鎖對象需要保證是同一個對象。
* 互斥鎖使用舉例
//聲明鎖
@interface ViewController ()
/鎖對象
@property (nonatomic, strong) NSObject *locker;
@end
@implementation ViewController
-(void)viewDidLoad
{
//初始化鎖
self.locker = [[NSObject alloc] init];
//創建線程
self.thread = [[NSThread alloc] initWithTarget:self selector:@selector(sub-thread) object:nil];
//開始線程
self.thread start];
}
-(void)sub-thread
{
@synchronized(鎖對象)
{
//鎖定的代碼
}
}
@end
* 互斥鎖的優缺點
* 優點:可以解決多線程同時操作同一數據引發的數據安全問題。
* 缺點:浪費CPU資源。
########```注意事項```
* 不要在主線程里加互斥鎖,加到子線程里。
* 涉及到數據訪問/數據操作的時候加鎖。
* 多線程默認是異步執行的。