多線程gcd 09與主講_第1頁
多線程gcd 09與主講_第2頁
多線程gcd 09與主講_第3頁
多線程gcd 09與主講_第4頁
多線程gcd 09與主講_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第十六節(jié)課多線程、--方法方法方法(void)method{(void)method{[self}(void)runA[selfrunB];[selfrunC];}(int)runBreturn100;}(void)runC}112…QQ

·每一個程序都有一個主線程,程序啟動時創(chuàng)建(調(diào)用main來啟動·任何有可能堵塞主線程的任務(wù)不要在主線程執(zhí)行 網(wǎng)絡(luò)iOS中的主線程的堆棧大小是從第二個線程開始都是512KB·只有主 ·NSThread每個NSThread對象對應(yīng)一個線程,量級較輕·NSOperation/NSOperationQueueGrandCentralDispatchC ·NSThread:·優(yōu)點:NSThread·NSOperation:·NSOperation是面向?qū)ο蟮模篏randCentralDispatch是由蘋果開發(fā)的一個多核編程的解決方案。iOS4.0+才能使用,是替代NSThreadNSOperation的高效和強大的技術(shù)是基于C語言的11第?種開啟新的線程調(diào)?NSThread*t=[[NSThreadalloc][tstart22第?種開啟新的線程調(diào)?[NSThreadtoTarget:self3第三種開啟新的線程調(diào)?[selfNSOperationQueue*threadQueue=[[NSOperationQueuealloc]init];[threadQueueaddOperationWithBlock:^(void){NSThread*t=[NSThreadcurrentThread];if(![tisMainThread]){}NSOperationQueue*threadQueue=[[NSOperationQueuealloc]init];NSInvocationOperation*op=[[NSInvocationOperationalloc][threadQueue在主線程上調(diào)?reloadData[selfwithObject:nil++(NSThread+++-[self-(void)mutableThreadNSAutoreleasePool*pool=[[NSAutoreleasePoolalloc]for(inti=0;i<10;i++){[NSThread}withObject:nilwaitUntilDone:NO];[pool}1.通過類別為UIImageView擴展一個方法,此方法可以異步加載 @interfaceUIImageView-(void)setImageWithURL:(NSURL*)url;·NSRunloop的基本概念·Runloops是線程相關(guān)的的基礎(chǔ)框架的一部分。一個runloop就是一 ·NSRunLoop可以保持一個線程一直為活動狀態(tài),不會馬上銷毀掉?!ぴ诙嗑€程中使用定時器必須開啟Runloop,因為只有開啟Runloop-(void)runThreadNSAutoreleasePool*pool=[[NSAutoreleasePoolalloc]init];[NSTimerscheduledTimerWithTimeInterval:1target:selfuserInfo:nilrepeats:YES];[[NSRunLoopcurrentRunLoop]run];[poolrelease];}··GrandCentralDispatch( )是Apple開發(fā)的一個多核編程的解決方法,在MacOSX10.6雪豹中首次推出,并隨后被引入到了iOS4.0中。 NSThreadNSOperationQueueNSInvocationOperation 應(yīng)文件描述符、machports(Machport用于OSX上的進程間通訊)、進程、計時器、信號、用戶生 。這些句柄通 來并發(fā)執(zhí)行 比之thread更簡單易用?;赽lock的特性導(dǎo)致它能極為簡單得在不同代 DispatchDispatch·DispatchQueueDispatchQueue是什么?是執(zhí)行處理的等待隊列。通過dispatch_async進先出(FIFO)順序追加到Queue中處理?!ispatchQueue:1、SerialDispatchQueue(串行2、ConcurrentDispatchQueue(并行、并Dispatch··ConcurrentDispatchQueue·取決于CPU核數(shù)和CPU負荷。 ·全局隊列(可能會開啟多條線程dispatch_queue_tqueuedispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,·串行隊列(只可能會開啟一條線程dispatch_queue_tqueue=dispatch_queue_create("myQueue",DISPATCH_QUEUE_SERIAL);·dispatch_queue_create·dispatch_queue_create//創(chuàng)建SerialDispatchQueuedispatch_queue_create("com.wxhl.serial1",NULL);//創(chuàng)建ConcurrentDispatchQueuedispatch_release·在iOS6之后, 兼容ARC,這意味著不再需要用dispatch_retain或者·dispatch_get_main_queue·MainDispatchQueue正如名稱中的Main一樣,是在主 MainDispatchQueueSerialDispatchQueue?!ひ磺懈鶸I有關(guān)的操作必須放在主 執(zhí)行。所以要追加到MainDispatchQueue?!lobalDispatchQueueConcurrentDispatchQueue?!lobalDispatchQueue有4DISPATCH_QUEUE_PRIORITY_HIGHDISPATCH_QUEUE_PRIORITY_DEFAULTDISPATCH_QUEUE_PRIORITY_LOWDISPATCH_QUEUE_PRIORITY_BACKGROUND( eeee·異步操作:dispatch_async·asyncasynchronousBlockDispatchQueue中。dispatch_async··同步追加Block塊,與上面相反。在追加Block結(jié)束之前,dispatch_sync函數(shù)會一·使用dispatch_sync容易引起死鎖,慎重使用。比如在主線 列里面添加任務(wù)的操作就會引起死鎖。/*死鎖1*/dispatch_queue_tqueue=

/*死鎖2*/dispatch_queue_tqueue=dispatch_async(queue,^{··dispatch_group_async·dispatch_group_asyncdispatch_group_notifydispatch_group_waitdispatch_queue_tqueue=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);dispatch_group_tgroup=dispatch_group_create();dispatch_group_async(group,queue,^{NSLog(@"block1");});dispatch_group_async(group,queue,^{NSLog(@"block2");});dispatch_group_async(group,queue,^{NSLog(@"block3");});/*匯總結(jié)果()dispatch_group_wait(group,DISPATCH_TIME_FOREVER);dispatch_time_ttime=dispatch_time(DISPATCH_TIME_NOW,(1ull*NSEC_PER_SEC));longresult=dispatch_group_wait(group,time);if(result==0)}dispatch·dispatch_once函數(shù)實現(xiàn)單例+(id)allocWithZone:(NSZone{//解決多 同樣只能實例化出?個對象副sta

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論