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

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

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

大家都知道,在開發(fā)過程中應(yīng)該盡可能減少用戶等待時間,讓程序盡可能快的完成運算??墒菬o論是哪種語言開發(fā)的程序最終往往轉(zhuǎn)換成匯編語言進而解釋成機器碼來執(zhí)行。但是機器碼是按順序執(zhí)行的,一個復(fù)雜的多步操作只能一步步按順序逐個執(zhí)行。改變這種狀況可以從兩個角度出發(fā):對于單核處理器,可以將多個步驟放到不同的線程,這樣一來用戶完成UI操作后其他后續(xù)任務(wù)在其他線程中,當CPU空閑時會繼續(xù)執(zhí)行,而此時對于用戶而言可以繼續(xù)進行其他操作;對于多核處理器,如果用戶在UI線程中完成某個操作之后,其他后續(xù)操作在別的線程中繼續(xù)執(zhí)行,用戶同樣可以繼續(xù)進行其他UI操作,與此同時前一個操作的后續(xù)任務(wù)可以分散到多個空閑CPU中繼續(xù)執(zhí)行(當然具體調(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,以當前時間為基準阻塞4秒

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

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

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


線程的死亡:

當線程的任務(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"];
}
//當手指按下的時候,開啟線程
-(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è)置線程阻塞,以當前時間為基準阻塞秒
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"];
}
//當手指按下的時候,開啟線程
-(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è)置線程阻塞,以當前時間為基準阻塞秒
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

最新評論

云和县| 峨山| 台安县| 周口市| 太康县| 荆门市| 获嘉县| 察雅县| 甘洛县| 康定县| 莱芜市| 宁陵县| 二连浩特市| 龙山县| 莎车县| 西昌市| 新泰市| 怀柔区| 永胜县| 济南市| 北碚区| 肇州县| 南川市| 锦州市| 阳新县| 定陶县| 兰州市| 磐石市| 河池市| 鲁山县| 隆昌县| 淮北市| 凯里市| 青浦区| 浦县| 花莲县| 万山特区| 奎屯市| 嘉禾县| 开江县| 武定县|