您好,登錄后才能下訂單哦!
NSObject提供的處理多線程的方法.
NSThread: 創(chuàng)建一個NSThread對象就是創(chuàng)建了一個線程
缺點: 需要手動管理線程的基本信息, 比如線程的開啟, 線程的安全等.
優(yōu)點: 可以快速創(chuàng)建一個線程并且對線程有控制權, 很輕量級.
3. NSOpeationQueue: 創(chuàng)建一個隊列, 把線程加入到隊列中, 在main方法中實現功能.
4. GCD(Grand Central Dispatch 大調度中心): 獲得一個隊列, 把任務添加到隊列中, 讓隊列管理執(zhí)行的任務.
特點: 效率高, 使用簡單.
有兩種創(chuàng)建方式:
(1)創(chuàng)建一個隊列
dispatch_queue_t myqueue = dispatch_queue_create("queue", DISPATCH_QUEUE_CONCURRENT);
dispatch_async(myqueue, ^{
NSInteger a = 0;
for (NSInteger i = 0; i < 1000000000; i++) {
a++;
}
});
(2)獲得系統(tǒng)的隊列(5個, 一個串行隊列(主隊列中包括主線程), 四個并行隊列也成全局隊列)
dispatch_queue_t mainQueue = dispatch_get_main_queue();
// 獲取全局隊列
dispatch_queue_t global = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
// 異步的任務分發(fā)
dispatch_async(mainQueue, ^{
NSLog(@"主隊列執(zhí)行!");
});
dispatch_async(global, ^{
NSInteger a = 0;
for (NSInteger i = 0; i < 1000000000; i++) {
a++;
}
});
// 代碼只執(zhí)行一次
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
NSLog(@"代碼只執(zhí)行一次");
});
// 讓代碼延遲執(zhí)行
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(4 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
NSLog(@"延遲幾秒執(zhí)行");
});
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。