zoukankan      html  css  js  c++  java
  • 多线程 NSThread 的使用

    NSThread简介

    使用NSThread 实现多线程,需要手动管理线程的生命周期, 

    一.线程的创建

    //1.实例方法创建,,需要手动启动线程

     

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

     

        [thread start];

    //2.类方法

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

        

    二.线程的睡眠(暂停线程)

    //当前线程调用 sleep 方法,进入阻塞状态,

     

        [NSThread sleepUntilDate:[NSDate distantFuture];

     

        [NSThread sleepForTimeInterval:1.0];

    三.改变线程的优先级

    //优先级越高的线程,被执行的几乎越高,每个线程的优先级默认为0.5

    //获取

       NSLog(@"%f",thread.threadPriority);

    //设置

        thread.threadPriority = 1.0;

     

    四.线程的安全问题

    1.使用@ synchronized 实现同步

     

    @synchronized{

     

    //此处的代码就是:同步的代码块

     

    }

    //含义:线程开始执行同步代码块之前,需要先获得对同步监视器的锁定

    //同步监视器目的: 阻止 两个线程对一个共享资源进行并发访问

     

    2.同步锁 NSLock

    //类似,只是显示的使用对象最为同步锁

    //每次只能有一个线程对 NSLock 对象加锁,线程开始访问共享资源之前需要获得 NSLock 对象

     NSLock *lock;

           lock = [[NSLock alloc]init];

        //锁定

        [lock lock];

        

        //...需要保证线程安全的代码

        

        //解锁

        [lock unlock];

     

     

    五.使用 NSCondition 控制线程通信

    NSCondition提供了三个方法:

    1.阻塞当前线程,直到其他线程调用了该 NSCondition 的 signal 或 broadcast 方法,来唤醒该线程

    - wait 

    - waitUntilDate:

    2.唤醒在此 NSCondition对象上等待的单个线程

    - signal

    3.唤醒在此 NSCondition对象上等待的所有线程

    - broadcast

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    Web前端开发最佳实践系列文章汇总
    站点的安全防范都是后端的职责?非也,Web前端安全同样不可忽视
    Web前端开发最佳实践(13):前端页面卡顿?可能是DOM操作惹的祸,你需要优化代码
    Web前端开发最佳实践(12):JavaScript代码中有大量写死的配置数据?这些数据难以维护,你需要合理组织这些数据
    Web前端开发最佳实践(10):JavaScript代码不好读,不好维护?你需要改变写代码的习惯
    Web前端开发最佳实践(11):使用更严格的JavaScript编码方式,提高代码质量
    Web前端开发最佳实践(9):CSS代码太太乱,重复代码太多?你需要精简CSS代码
    Web前端开发最佳实践(8):还没有给CSS样式排序?其实你可以更专业一些
    Web前端开发最佳实践(7):使用合理的技术方案来构建小图标
    愚工钻孔机如何做到世界第一:227版本超多改进(2)
  • 原文地址:https://www.cnblogs.com/daxueshan/p/7205619.html
Copyright © 2011-2022 走看看