IOS多線程

IOS多線程

  • IOS多線程的開銷

    • 內(nèi)核數(shù)據(jù)結(jié)構(gòu)-大約1KB。
    • 棧空間-子線程512KB,主線程1MB。(通過線程對象可以使用-setStackSize:函數(shù)設(shè)置線程空間,但必須是4K的倍數(shù),而且最小是16K)
    • 創(chuàng)建線程大約需要90毫秒。
  • 什么是主線程?

    • iOS程序運行后,會默認開啟一條線程,這條線程稱為主線程或者叫做UI線程
  • 主線程(UI線程)的作用?

    • 顯示或者刷新UI界面。
    • 處理UI事件.(點擊事件、滾動事件、拖拽事件等)
  • 主線程的使用注意事項

    • 不要將耗時的操作放到主線程中。
  • 互斥鎖(線程同步技術(shù) )

    • 互斥鎖@synchronized的使用格式
    @synchronized(鎖對象)
    

{
//鎖定的代碼
}
//使用的的鎖對象需要保證是同一個對象。


* 互斥鎖使用舉例

//聲明鎖
@interface ViewController ()
/鎖對象
@property (nonatomic, strong) NSObject *locker;
@end
@implementation ViewController
-(void)viewDidLoad
{
//初始化鎖
self.locker = [[NSObject alloc] init];
//創(chuàng)建線程
self.thread = [[NSThread alloc] initWithTarget:self selector:@selector(sub-thread) object:nil];
//開始線程
self.thread start];
}
-(void)sub-thread
{
@synchronized(鎖對象)
{
//鎖定的代碼
}
}
@end


* 互斥鎖的優(yōu)缺點
  * 優(yōu)點:可以解決多線程同時操作同一數(shù)據(jù)引發(fā)的數(shù)據(jù)安全問題。
  * 缺點:浪費CPU資源。

########```注意事項```
  * 不要在主線程里加互斥鎖,加到子線程里。
  *  涉及到數(shù)據(jù)訪問/數(shù)據(jù)操作的時候加鎖。
  * 多線程默認是異步執(zhí)行的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容