文档章节

进程和线程

依然_范特西_
 依然_范特西_
发布于 2015/01/23 11:56
字数 622
阅读 4
收藏 0

一个应用就是一个进程

ios中一个应用程序打开被加载到内存中就是一个进程 


线程和进程一个是共享数据的一个不共享数据 

一个进程下面最少有一个线程 

在ios中 默认情况下有一个进程 这个进程有一个主线程。

cpu一次只能有一个进程 

但是cpu的执行速度很快 所以我们把他每一个单位时间(比如说一毫秒)分割出来 去执行我们需要的 任务,这样在一秒中就会有一千个线程被执行 ,这样我们把这一千个线程分配给 多个应用程序,就可以达到多任务同时进行的效果。但是这样会有一个 记录上次某个应用程序执行到的位置,这个玩意叫做寄存器,每个线程都有一个自己的寄存器。

电脑的核心数跟应用程序的多开有 关系,网游对显卡的要求并不高 单机游戏反而要求比较高,因为网游需要的玩家比较多,网游是为了让更多人玩的

***************

ui操作一定要在主线程中执行在子线程中执行是非常危险的。只要界面会发生变化的操作都是ui操作。

异步下载 请求之类的 就是一个多线程,子线程在完成加载 之后会进行回调

 //创建一个子线程去调用

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

    //减方法

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

    //优先级

    thread.threadPriority = 0.5;

    //给线程取名字

    thread.name = @"t1";

       

    [thread start];

    //现在就是花了两秒钟 把这两件事搞完了,

****经过试验证明 thread的优先级默认为0.5


苹果封装好的 线程

可以添加到队列中 

  NSOperationQueue *queue = [[NSOperationQueue alloc]init];

    

    //最大操作进行数

    queue.maxConcurrentOperationCount = 2;

    

    //操作

    NSInvocationOperation *opreation = [[NSInvocationOperation alloc]initWithTarget:self selector:@selector(first) object:nil];

    

    //

    NSBlockOperation *blockOpreation = [NSBlockOperation blockOperationWithBlock:^{

        sleep(2);

        NSLog(@"尼玛,这都可以");

    

    }];

    //添加到队列中

    [queue addOperation:opreation];

    [queue addOperation:blockOpreation];



//队列描述符 线程

    dispatch_queue_t t = dispatch_queue_create(NULL, NULL);


    dispatch_async(t, ^{[self first];});

     //dispatch_async(t, ^{[self second];});

    //找到一个当前程序的线程拿过来用

    dispatch_async(dispatch_get_global_queue(0, 0), ^{[self second];});

线程之间的通信 子线程之间的跳转

 面试:线程怎么用,线程安全,线程跟进程的区别 

两种方法 加锁nslock [lock lock] ;[lock unlock] 加线程语句块 @synchornized{}






© 著作权归作者所有

依然_范特西_
粉丝 1
博文 5
码字总数 5427
作品 0
焦作
私信 提问
Unix / Linux 线程的实质

线 程 线程与进程的比较 概述: 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单...

cnyinlinux
2015/01/15
4.3K
2
操作系统中的进程与线程

简介 在传统的操作系统中,进程拥有独立的内存地址空间和一个用于控制的线程。但是,现在的情况更多的情况下要求在同一地址空间下拥有多个线程并发执行。因此线程被引入操作系统。 为什么需要...

范大脚脚
2017/11/15
0
0
Linux线程简说

Linux线程简说 尹德位 2015 西安 本文内容臃肿,作者尽力在描述自己对线程的感悟,表达能力有限,敬请读者去其糟粕。 系统环境: RedHat Enterprise Linux 7.0 x86_64 内核版本: linux-4.1.0...

cnyinlinux
2015/11/26
310
0
《现代操作系统》读书笔记——线程

线程是最小的任务调度单位,是依赖于进程而存在的迷你进程。和进程一样,线程也有三种状态——运行、就绪、阻塞。我认为,线程是进程中任务真正的执行者,而进程提供了内存空间、CPU、程序计...

daryl
09/29
0
0
linux程序设计之线程、进程和程序的简单比较

线程,进程和程序的简单比较 我对于线程,进程的概念一直都是比较模糊,最近整理了一下。总结起来就是,线程是进程的一部分,进程是程序的一部分。 线程的引入:例如,有一个Web服务器要进程...

捕风的xiao_k
2018/06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

前端技术之:Prisma Demo服务部署过程记录

安装前提条件: 1、已经安装了docker运行环境 2、以下命令执行记录发生在MackBook环境 3、已经安装了PostgreSQL(我使用的是11版本) 4、Node开发运行环境可以正常工作 首先需要通过Node包管...

popgis
今天
5
0
数组和链表

数组 链表 技巧一:掌握链表,想轻松写出正确的链表代码,需要理解指针获引用的含义: 对指针的理解,记住下面的这句话就可以了: 将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指...

code-ortaerc
今天
4
0
栈-链式(c/c++实现)

上次说“栈是在线性表演变而来的,线性表很自由,想往哪里插数据就往哪里插数据,想删哪数据就删哪数据...。但给线性表一些限制呢,就没那么自由了,把线性表的三边封起来就变成了栈,栈只能...

白客C
今天
43
0
Mybatis Plus service

/** * @author beth * @data 2019-10-20 23:34 */@RunWith(SpringRunner.class)@SpringBootTestpublic class ServiceTest { @Autowired private IUserInfoService iUserInfoS......

一个yuanbeth
今天
5
0
php7-internal 7 zval的操作

## 7.7 zval的操作 扩展中经常会用到各种类型的zval,PHP提供了很多宏用于不同类型zval的操作,尽管我们也可以自己操作zval,但这并不是一个好习惯,因为zval有很多其它用途的标识,如果自己...

冻结not
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部