• 多线程


    进程:进程就是指在系统中正在运行的一个应用程序,都是独立的,并且每个进程均运行在其专有且受保护的内存中
    线程:一个进程至少有多个进程组成,线程是进程的基本执行单元,进程中的所有任务都要在线程中执行
    
    在OC中,一般要是有同步或者异步的问题,都要去葱多线程的角度去考虑
    同步:单个进程执行多个人物,只能是依次执行
    异步:多个进程同时执行多个任务
    
    
    多线程优点:
    1.多线程可以解决程序组赛问题
    2.可以提高程序的执行效率
    3.提高cpu和内存的利用率
    4.线程执行完任务后会自动销毁
    缺点:
    1.多线程开辟会开辟一段空间,如果线程多的话,会降低程序的性能
    2.线程越多,cpu调用线程的开销就会越大
    3.线程较多,造成程序复杂化(线程间的通信,线程间的资源共享)
    
    主线程:
    一个程序开启后,会默认开启一个主线程或UI线程 ,主线程一般处理UI刷新和UI事件,咱们一般不要把耗时操作放在主线程里面,这样会卡住主线程,严重影响UI的流畅度,""的感觉
    
    所谓的多线程就是cpu在多个线程间迅速的切换,造成了一种多个任务同时执行的假象,一般有耗时操作时都会把这个操作去放在子线程上去完成,主线程一般只用来解决UI的更新,以及相应时间
    线程的5中状态:
    创建 就绪 运行 阻塞 死亡 是一个环
    
    
    
    
    
    
    NSTread 在平时的开发中不常使用,一般用来作为工具类方法,进行测试
    
    创建方式:
    1. NSThread *thread = [[NSThread alloc]initWithTarget:self selector:@selector(demo) object:nil];
      [thread start];
    
    2.[NSThread detachNewThreadSelector:@selector(demo) toTarget:self withObject:nil];
    
    3.[self performSelectorInBackground:@selector(demo) withObject:nil];
    
    常用属性:
    //设置线程的优先级 0 - 1值越大优先级越高,值越小优先级越低,默认为0.5
        [thread setThreadPriority:1.0];
    //设置线程名称 用于调试
        thread2.name = @"test";
    // 当前线程
       [NSThread currentThread]
    
     //获取当前线程占用的内存大小
        NSLog(@"touchesBegan %zd",[NSThread currentThread].stackSize/1024);

        // 线程阻塞状态

        [NSThread sleepForTimeInterval:1.0];

        // 线程死亡

        [NSThread exit];

    多个线程共享同一个资源时,会造成线程不安全
    解决方式 互斥锁 
    主要是防止多线程抢资源造成的数据不安全
    原理 :每一个对象(NSObject)内部都有一个锁(变量)当有线程要进入synchronized到代码块的时候先检查对象的锁是打开或者是关闭默认是打开,当线程会进入代码的内部,进行上锁
    如果锁是是关闭的,再有线程执行代码的时候就要先等待,直到上个线程结束后就先等待,直到直到锁打开就才可以执行

    @synchronized(self) {// 需要锁定的代码} 注意self要是全局对象

    atomic :自旋锁  (单写多写) 效率低 (轮讯)

    
    
    
     
  • 相关阅读:
    ES head安装笔记, 还没有试
    sed用法笔记
    Kibana笔记
    ElasticSearch笔记
    Mongo聚合笔记
    java 判断是否为数字
    Redis 一:安装篇
    make问题:make[1] entering directory
    Java 多线程 简单实例 (消费者与生成者)的关系
    Java 多线程 简单实例 (Runnable)
  • 原文地址:https://www.cnblogs.com/zhubaofeng/p/5248754.html
Copyright © 2020-2023  润新知