博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多线程
阅读量:5136 次
发布时间:2019-06-13

本文共 1470 字,大约阅读时间需要 4 分钟。

进程:进程就是指在系统中正在运行的一个应用程序,都是独立的,并且每个进程均运行在其专有且受保护的内存中线程:一个进程至少有多个进程组成,线程是进程的基本执行单元,进程中的所有任务都要在线程中执行在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 :自旋锁  (单写多写) 效率低 (轮讯)

 

 

 

 

 

转载于:https://www.cnblogs.com/zhubaofeng/p/5248754.html

你可能感兴趣的文章
抢红包游戏
查看>>
android 沉浸通知栏
查看>>
saltstack SLS文件
查看>>
Linux-各种姿势(less\vi等)打开各种类型的文件(txt/csv/xlsx等)出现不能打开(全乱码、部分乱码、二进制文件等)的问题...
查看>>
演示Spring框架的JDBC模板的简单操作
查看>>
【Linux】【Services】【SaaS】Docker+kubernetes(2. 配置NTP服务chrony)
查看>>
Core Animation学习
查看>>
QT快捷键
查看>>
您上次已将进行的搜狗输入法的安装或卸载,操作要求重启。您在重启之后才能继续新的输入法安装卸载程序。...
查看>>
MySQL数据库应用 从入门到精通 学习笔记
查看>>
[转载]Ocelot简易教程(二)之快速开始2
查看>>
设计模式的七大原则
查看>>
java保留两位小数的方法
查看>>
Oracle中将查询出的多条记录的某个字段拼接成一个字符串的方法
查看>>
Centos6安装SaltStack
查看>>
网络编程练习 -- POST-JSON数据
查看>>
php判断是手机访问还是电脑访问
查看>>
链接字符收藏
查看>>
Exchange 2016中的削减内容
查看>>
Dicom DIR文件格式
查看>>