最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

IOS多線程開發(fā)之線程的狀態(tài)

 更新時間:2015年12月18日 14:33:41   作者:187n  
這篇文章主要介紹了IOS多線程開發(fā)之線程的狀態(tài) 的相關(guān)資料,需要的朋友可以參考下

大家都知道,在開發(fā)過程中應(yīng)該盡可能減少用戶等待時間,讓程序盡可能快的完成運算。可是無論是哪種語言開發(fā)的程序最終往往轉(zhuǎn)換成匯編語言進而解釋成機器碼來執(zhí)行。但是機器碼是按順序執(zhí)行的,一個復(fù)雜的多步操作只能一步步按順序逐個執(zhí)行。改變這種狀況可以從兩個角度出發(fā):對于單核處理器,可以將多個步驟放到不同的線程,這樣一來用戶完成UI操作后其他后續(xù)任務(wù)在其他線程中,當(dāng)CPU空閑時會繼續(xù)執(zhí)行,而此時對于用戶而言可以繼續(xù)進行其他操作;對于多核處理器,如果用戶在UI線程中完成某個操作之后,其他后續(xù)操作在別的線程中繼續(xù)執(zhí)行,用戶同樣可以繼續(xù)進行其他UI操作,與此同時前一個操作的后續(xù)任務(wù)可以分散到多個空閑CPU中繼續(xù)執(zhí)行(當(dāng)然具體調(diào)度順序要根據(jù)程序設(shè)計而定),及解決了線程阻塞又提高了運行效率。蘋果從iPad2 開始使用雙核A5處理器(iPhone中從iPhone 4S開始使用),A7中還加入了協(xié)處理器,如何充分發(fā)揮這些處理器的性能確實值得思考。今天將重點分析iOS多線程開發(fā):

一、簡單介紹

線程的創(chuàng)建:

復(fù)制代碼 代碼如下:

self.thread=[[NSThread alloc]initWithTarget:self selector:@selector(test) object:nil];

說明:創(chuàng)建線程有多種方式,這里不做過多的介紹。

線程的開啟:

復(fù)制代碼 代碼如下:

[self.thread start];

線程的運行和阻塞:

(1)設(shè)置線程阻塞1,阻塞2秒

[NSThread sleepForTimeInterval:2.0];

(2)第二種設(shè)置線程阻塞2,以當(dāng)前時間為基準(zhǔn)阻塞4秒

復(fù)制代碼 代碼如下:

NSDate *date=[NSDate dateWithTimeIntervalSinceNow:4.0];
[NSThread sleepUntilDate:date];

線程處理阻塞狀態(tài)時在內(nèi)存中的表現(xiàn)情況:(線程被移出可調(diào)度線程池,此時不可調(diào)度)


線程的死亡:

當(dāng)線程的任務(wù)結(jié)束,發(fā)生異常,或者是強制退出這三種情況會導(dǎo)致線程的死亡。


線程死亡后,線程對象從內(nèi)存中移除。

二、代碼示例

代碼示例1:

//
// YYViewController.m
// -NSThread-線程的狀態(tài)
//
// Created by apple on --.
// Copyright (c) 年 itcase. All rights reserved.
//
#import "YYViewController.h"
@interface YYViewController ()
@property(nonatomic,strong)NSThread *thread;
@end
@implementation YYViewController
- (void)viewDidLoad
{
[super viewDidLoad];
//創(chuàng)建線程
self.thread=[[NSThread alloc]initWithTarget:self selector:@selector(test) object:nil];
//設(shè)置線程的名稱
[self.thread setName:@"線程A"];
}
//當(dāng)手指按下的時候,開啟線程
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
//開啟線程
[self.thread start];
}
-(void)test
{
//獲取線程
NSThread *current=[NSThread currentThread];
NSLog(@"test---打印線程---%@",self.thread.name);
NSLog(@"test---線程開始---%@",current.name);
//設(shè)置線程阻塞,阻塞秒
NSLog(@"接下來,線程阻塞秒");
[NSThread sleepForTimeInterval:.];
//第二種設(shè)置線程阻塞,以當(dāng)前時間為基準(zhǔn)阻塞秒
NSLog(@"接下來,線程阻塞秒");
NSDate *date=[NSDate dateWithTimeIntervalSinceNow:.];
[NSThread sleepUntilDate:date];
for (int i=; i<; i++) {
NSLog(@"線程--%d--%@",i,current.name);
}
NSLog(@"test---線程結(jié)束---%@",current.name);
}
@end 

打印查看:


代碼示例2(退出線程):

//
// YYViewController.m
// -NSThread-線程的狀態(tài)
//
// Created by apple on --.
// Copyright (c) 年 itcase. All rights reserved.
//
#import "YYViewController.h"
@interface YYViewController ()
@property(nonatomic,strong)NSThread *thread;
@end
@implementation YYViewController
- (void)viewDidLoad
{
[super viewDidLoad];
//創(chuàng)建線程
self.thread=[[NSThread alloc]initWithTarget:self selector:@selector(test) object:nil];
//設(shè)置線程的名稱
[self.thread setName:@"線程A"];
}
//當(dāng)手指按下的時候,開啟線程
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
//開啟線程
[self.thread start];
}
-(void)test
{
//獲取線程
NSThread *current=[NSThread currentThread];
NSLog(@"test---打印線程---%@",self.thread.name);
NSLog(@"test---線程開始---%@",current.name);
//設(shè)置線程阻塞,阻塞秒
NSLog(@"接下來,線程阻塞秒");
[NSThread sleepForTimeInterval:.];
//第二種設(shè)置線程阻塞,以當(dāng)前時間為基準(zhǔn)阻塞秒
NSLog(@"接下來,線程阻塞秒");
NSDate *date=[NSDate dateWithTimeIntervalSinceNow:.];
[NSThread sleepUntilDate:date];
for (int i=; i<; i++) {
NSLog(@"線程--%d--%@",i,current.name);
if (==i) {
//結(jié)束線程
[NSThread exit];
}
}
NSLog(@"test---線程結(jié)束---%@",current.name);
}
@end 

打印示例:


注意:人死不能復(fù)生,線程死了也不能復(fù)生(重新開啟),如果在線程死亡之后,再次點擊屏幕嘗試重新開啟線程,則程序會掛。

以上內(nèi)容是小編給大家介紹的IOS多線程開發(fā)之線程的狀態(tài) ,希望大家喜歡。

相關(guān)文章

  • IOS實現(xiàn)自定義透明背景的tabbar

    IOS實現(xiàn)自定義透明背景的tabbar

    這篇文章介紹的是在IOS中怎樣把tabbar背景設(shè)置為透明,有需要的小伙伴們可以參考借鑒。
    2016-08-08
  • Mac  Android Studio快捷鍵整理

    Mac Android Studio快捷鍵整理

    這篇文章主要介紹了Mac Android Studio快捷鍵的相關(guān)資料,這里整理了所有能用的快捷鍵,提供工作效率,需要的朋友可以參考下
    2016-10-10
  • UITextView實現(xiàn)只允許鏈接交互不允許選擇圖片的方法

    UITextView實現(xiàn)只允許鏈接交互不允許選擇圖片的方法

    這篇文章主要介紹了UITextView實現(xiàn)只允許鏈接交互不允許選擇圖片的方法,文中介紹的非常詳細,相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • iOS通過代理逆向傳值的方式詳解

    iOS通過代理逆向傳值的方式詳解

    在iOS開發(fā)中傳值是幾乎每個App都會用到的,對于傳統(tǒng)的順向傳值應(yīng)該說是比較簡單的,但是逆向傳值往往會用到代理模式來實現(xiàn),很多同學(xué)在這一塊有迷惑,迷惑的不是怎么逆向傳值,而是不理解代理模式,下面這篇文章就給大家分析一下iOS通過代理逆向傳值的方式。
    2016-12-12
  • scrollview tableView嵌套解決方案示例

    scrollview tableView嵌套解決方案示例

    這篇文章主要介紹了scrollview tableView嵌套解決方案示例的代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • iOS 圖片加載框架SDWebImage解讀

    iOS 圖片加載框架SDWebImage解讀

    本篇文章主要介紹了iOS 圖片加載框架SDWebImage解讀,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • 匯總ios開發(fā)逆向傳值的方法

    匯總ios開發(fā)逆向傳值的方法

    這篇文章主要為大家匯總了ios開發(fā)逆向傳值的方法,感興趣的小伙伴們可以參考一下
    2016-03-03
  • ios學(xué)習(xí)筆記之基礎(chǔ)數(shù)據(jù)類型的轉(zhuǎn)換

    ios學(xué)習(xí)筆記之基礎(chǔ)數(shù)據(jù)類型的轉(zhuǎn)換

    在編碼過程中,數(shù)據(jù)的處理是必要的。眾多數(shù)據(jù)中,NSString、NSData、NSArray、 NSDictionary等數(shù)據(jù)類型是常用的,對付它們?nèi)菀?,但是在多個數(shù)據(jù)類型之間轉(zhuǎn)換就需要技巧了。本文主要給大家介紹ios中基礎(chǔ)數(shù)據(jù)類型的轉(zhuǎn)換,有需要的下面來一起看看吧。
    2016-11-11
  • IOS Xcode調(diào)試常用命令和斷點整理

    IOS Xcode調(diào)試常用命令和斷點整理

    這篇文章主要介紹了IOS Xcode調(diào)試常用命令和斷點整理的相關(guān)資料,這里對IOS Xcode調(diào)試常用命令進行了總結(jié),需要的朋友可以參考下
    2016-12-12
  • iOS實現(xiàn)帶文字的圓形頭像效果

    iOS實現(xiàn)帶文字的圓形頭像效果

    隨著騰訊QQ的普及,現(xiàn)在越來越多的社交類APP在顯示頭像的時候,都選擇了圓形頭像,本文將更進一步的介紹如何實現(xiàn)帶文字的圓形頭像效果,效果非常不錯,感興趣的朋友們可以參考借鑒,下面來一起看看吧。
    2016-10-10

最新評論

阿图什市| 车致| 四平市| 徐闻县| 忻城县| 龙陵县| 嘉禾县| 措勤县| 邳州市| 阿巴嘎旗| 古田县| 和田市| 南岸区| 海晏县| 兴宁市| 文成县| 项城市| 壶关县| 庐江县| 威远县| 皮山县| 同仁县| 平昌县| 泾源县| 宁城县| 佳木斯市| 澄迈县| 施秉县| 日照市| 监利县| 鄢陵县| 新民市| 望谟县| 东至县| 长武县| 台山市| 武义县| 南木林县| 新余市| 江源县| 井冈山市|