1. 程式人生 > >iOS多執行緒篇:NSThread

iOS多執行緒篇:NSThread

原文

一、什麼是NSThread

NSThread是基於執行緒使用,輕量級的多執行緒程式設計方法(相對GCD和NSOperation),一個NSThread物件代表一個執行緒,需要手動管理執行緒的生命週期,處理執行緒同步等問題。

二、NSThread方法介紹

1)動態建立

1 NSThread * newThread = [[NSThread alloc]initWithTarget:self selector:@selector(threadRun) object:nil];

動態方法返回一個新的thread物件,需要呼叫start方法來啟動執行緒

2)靜態建立

1 [NSThread detachNewThreadSelector:@selector(threadRun) toTarget:self withObject:nil];

由於靜態方法沒有返回值,如果需要獲取新建立的thread,需要在selector中呼叫獲取當前執行緒的方法

3)執行緒開啟

1 [newThread start];

4)執行緒暫停

1 2 [NSThread sleepForTimeInterval:1.0]; (以暫停一秒為例)
[NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:1.0]];

NSThread的暫停會有阻塞當前執行緒的效果

5)執行緒取消

1 [newThread cancel];

取消執行緒並不會馬上停止並退出執行緒,僅僅只作(執行緒是否需要退出)狀態記錄

6)執行緒停止

1 [NSThread exit];

停止方法會立即終止除主執行緒以外所有執行緒(無論是否在執行任務)並退出,需要在掌控所有執行緒狀態的情況下呼叫此方法,否則可能會導致記憶體問題。

7)獲取當前執行緒

1 [NSThread currentThread];

8)獲取主執行緒

1 [NSThread mainThread];

9)執行緒優先順序設定

iOS 8以前使用

1 [NSThread setThreadPriority:1.0];

這個方法的優先順序的數值設定讓人困惑,因為你不知道你應該設定多大的值是比較合適的,因此在iOS8之後,threadPriority添加了一句註釋:To be deprecated; use qualityOfService below

意思就是iOS 8以後推薦使用qualityOfService屬性,通過量化的優先順序列舉值來設定

qualityOfService的列舉值如下:

  • NSQualityOfServiceUserInteractive:最高優先順序,用於使用者互動事件

  • NSQualityOfServiceUserInitiated:次高優先順序,用於使用者需要馬上執行的事件

  • NSQualityOfServiceDefault:預設優先順序,主執行緒和沒有設定優先順序的執行緒都預設為這個優先順序

  • NSQualityOfServiceUtility:普通優先順序,用於普通任務

  • NSQualityOfServiceBackground:最低優先順序,用於不重要的任務

比如給執行緒設定次高優先順序:

1

相關推薦

iOS執行NSThread簡單介紹和使用

一、什麼是NSThread NSThread是基於執行緒使用,輕量級的多執行緒程式設計方法(相對GCD和NSOperation),一個NSThread物件代表一個執行緒, 需要手動管理執行緒的生命週期

iOS執行NSThread

原文 一、什麼是NSThread NSThread是基於執行緒使用,輕量級的多執行緒程式設計方法(相對GCD和NSOperation),一個NSThread物件代表一個執行緒,需要手動管理執行緒的生命週期,處理執行緒同步等問題。 二、NSThread

16、iOS線程NSThread

val thread rec getc ive 同時 開放 orm 通信 一、什麽是NSThread   NSThread是基於線程使用,輕量級的多線程編程方法(相對GCD和NSOperation),一個NSThread對象代表一個線程,需要手動管理線程的生命周期,處理線

執行 NSThread 面試題

- (void)viewDidLoad { [super viewDidLoad]; NSThread *thread = [[NSThread alloc] initWithBlock:^{ NSLog(@"1"); }]; [thread st

iOS 執行初步研究-NSThread

對於多執行緒的開發,iOS系統提供了多種不同的介面,先談談iOS多執行緒最基礎方面的使用。產生執行緒的方式姑且分兩類,一類是顯式呼叫,另一類是隱式呼叫。 一、顯示呼叫的類為NSThread。一般構造NSThread的執行緒物件可通過兩種方式: 1. 初始化執行緒主方法: [NSThread deta

iOS 執行簡單整理NSThread、GCD、NSOperation

iOS Pthreads 和 NSThread Pthreads:可以在Unix / Linux / Windows 等系統跨平臺使用,使用 C 語言編寫,需要程式設計師自己管理執行緒的生命週期,使用難度較大 NSThread:是蘋果官方提供的,使用起來比 pthread

iOS執行程式設計技術NSThread、Cocoa NSOperation、GCD三者使用詳解

簡介 iOS有三種多執行緒程式設計的技術,分別是:(一)NSThread (二)Cocoa NSOperation (三)GCD(全稱:Grand Central Dispatch)三種方式的優缺點介紹: 1)NSThread優點:NSThread 比其他兩個輕量級缺點

iOS執行-pthread、NSThread

pthread pthread 簡介 pthread 是一套通用的多執行緒的 API,可以在Unix / Linux / Windows/Mac OS/iOS等系統跨平臺使用,使用 C 語言編寫,需要程式設計師自己管理執行緒的生命週期,使用難度

iOS 執行NSThread

建立,啟動執行緒主執行緒相關用法獲取當前執行緒執行緒的名字其他建立執行緒方式:建立執行緒後自動啟動執行緒隱式建立並啟動執行緒優點:簡單快捷缺點:無法對執行緒進行更詳細的設定執行緒的狀態控制執行緒的方法啟

iOS總結-執行之NSOperation和NSOperationQueue

參考:https://www.jianshu.com/p/4b1d77054b35 NSOperation/NSOperationQueue是基於GCD更高一層的封裝,完全面向物件。 優點:1.可新增完成的程式碼塊,在操作完成後執行        

iOS總結-執行之GCD之三

dispatch_barrier_async :GCD柵欄方法 dispatch_apply dispatch_semaphore:GCD訊號量 持有計數的訊號,計數為0時等待,不可通過.計數為1或者大於1時,計數減1且不等待,可通過. dispatch_semap

iOS總結-執行之GCD之二

dispatch_group dispatch_wait dispatch_group_enter/dispatch_group_leave dispatch_group_enter標誌一個任務加入group,未執行完畢任務數+1  dispatch_group

iOS總結-執行之GCD之一

程序:作業系統資源分配的基本單位   執行緒:任務排程和執行的基本單位 一個程序裡面可以有多個執行緒. GCD自動利用CPU核心(如雙核,四核),會自動管理執行緒的生命週期(建立執行緒,排程任務,銷燬執行緒) 而NSOperation Queue是可以管理執行緒的. 佇列

iOS開發之再探執行程式設計Grand Central Dispatch詳解

Swift3.0相關程式碼已在github上更新。之前關於iOS開發多執行緒的內容釋出過一篇部落格,其中介紹了NSThread、操作佇列以及GCD,介紹的不夠深入。今天就以GCD為主題來全面的總結一下GCD的使用方式。GCD的歷史以及好處在此就不做過多的贅述了。本篇部落格會通過一系列的例項來好好的總結一下GC

iOS執行學習---NSThread

摘自:http://www.cnblogs.com/kenshincui/p/3983982.html 多執行緒 簡介 當用戶播放音訊、下載資源、進行影象處理時往往希望做這些事情的時候其他操作不會被中斷或者希望這些操作過程中更加順暢。在單執行緒中一個執行緒只能做一

iOS執行——你要知道的NSThread都在這裡

你要知道的iOS多執行緒NSThread、GCD、NSOperation、RunLoop都在這裡 本系列文章主要講解iOS中多執行緒的使用,包括:NSThread、GCD、NSOperation以及RunLoop的使用方法詳解,本系列文章不涉及基礎的執行緒

IOS 執行程式設計指南之NSThread

1.NSThread基本運用 app啟動時預設都是,包括ViewController裡執行的都是在主執行緒執行的 當計算了過大的時候會造成執行緒阻塞,比如點選按鈕執行下面的方法,只有計算完,結束後,程式才能繼續執行,如果是死迴圈的話,會一直佔用主執行緒,導致

iOS 執行NSThread

級別: ★★☆☆☆ 標籤:「iOS」「多執行緒」「NSThread」 作者: dac_1033 審校: QiShare團隊 iOS多執行緒系列計劃3篇,分別為:NSThread、NSOperation、GCD。 本篇是系列文章第一篇。 1. 執行緒的概念 首先簡單敘述一下這兩個概念,

iOS執行(NSThread、NSOperation、GCD)程式設計

全域性併發佇列的獲取方法(需要傳入兩個引數。第一個引數表示佇列優先順序,一般用DISPATCH_QUEUE_PRIORITY_DEFAULT。第二個引數暫時沒用,用0即可)dispatch_queue_t queue =  dispatch_get_global_queue(DISPATCH_QUEUE_PR

iOS 執行『GCD』詳盡總結

本文用來介紹 iOS 多執行緒中 GCD 的相關知識以及使用方法。這大概是史上最詳細、清晰的關於 GCD 的詳細講解+總結的文章了。通過本文,您將瞭解到: 1. GCD 簡介 2. GCD 任務和佇列 3. GCD 的使用步驟 4. GCD 的基本使用(6種不同組合區別) 5. GCD 執行緒間的通訊