码迷,mamicode.com
首页 > 其他好文 > 详细

NSThread

时间:2016-03-29 19:14:47      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:

1、NSThread的简介

  NSThread是一种面向对象的轻量级的实现多线程的方式(Cocoa层操作)。NSThread是对pthread的上层封装,每个thread都代表一个线程。

  优点:可以对多线程对象进行一系列管理,像名称、全局变量、优先级等。

  缺点:1)、需要自己管理生命周期和线程同步   2)、实现线程同步和对数据的枷锁会产生内存消耗。

 

2、NSThread 的创建(4种方法)

  

#pragma -mark  隐式创建

    //隐式创建  开辟速度慢,不需要开启

    //1、隐式创建

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

    

    //2、隐式创建

    [self performSelectorInBackground:@selector(subThreadcreate) withObject:nil];

#pragma -mark  显式创建 注意启动

    //显式创建  开辟速度快,需要开启(可以对属性进行一系列设置

    NSThread *thread1 = [[NSThread alloc] initWithTarget:self selector:@selector(subThreadcreate) object:nil];

    

    thread1.name = @"thread1";

    

    //启动

    [thread1 start];

#pragma -mark  子类化创建

    //子类化创建  重写入口函数(int main {})启动

    thread2 = [[SubThread alloc] init];

      //启动

    [thread2 start];

 

3、对属性的设置

    //名称

    thread2.name = @"thread2";

    //优先级

    //范围 0 -- 1.0  1.0 最高

//    thread2.threadPriority = 1.0;          //iOS 5.0 之后,qualityOfService取代threadPriority

    thread2.qualityOfService = NSQualityOfServiceDefault;(决定该线程有限执行的概率大增,并不代表一定优先执行该线程

    //栈空间

    thread2.stackSize = 100;

  线程的执行状态

  executing  正在执行

  finished   执行网城

  canceled  取消执行

 

4、线程之间的通信

  例:子线程实现图片下载,(任务繁重的操作交给子线程执行,例如,下载图片、视频等)

      技术分享

 

  对子线程的入口进行完善(子类化实现线程的开辟时)

      设置AutoRelease Pool

      设置RunLoop

      终止线程

      技术分享

      技术分享

 

5、加锁

  iOS中提供了NSLock对象实现枷锁

  初始化对象  _lock = [[UILock alloc]init];

  加锁  [_lock lock];

  解锁  [_lock  unlock];

 

6、线程同步

  A线程等地B线程执行后的某个结果继续执行

  UICondation *_condation = [[UICondatino alloc] init];

  

   [self performSelectorInBackground:@selector(waiting) withObject:str];

  - (void)waiting{

    [_condation lock];

    [_condatino wait];

  }

   [self performSelectorOnMainThread:@selector(setImageWithImg:) withObject:_image waitUntilDone:YES];

   

  - (Void)sendMsg{

    [_condation signal];

  } 

  

  

   

 

  

 

NSThread

标签:

原文地址:http://www.cnblogs.com/feng-wei-zhu/p/5334062.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!