多线程和网络

来源:互联网 发布:福建广电网络收费价格 编辑:程序博客网 时间:2024/04/30 10:38

多线程和网络

知识点

pastedGraphic.png

 pastedGraphic_1.png

一般应用程序都是一个进程.

一个进程下面可以有多个线程,进程可以看做一个容器,里面放置了好多的线程.线程相当于一个路径,多线程相当于多个路径,一个线程就是函数调用,首先调用main函数

pastedGraphic_2.pngpastedGraphic_3.pngpastedGraphic_4.png主线程          线程1   

pastedGraphic_5.pngpastedGraphic_6.png

pastedGraphic_7.png




主线程和线程1是并行的,是同步的.

即便发生线程1赌赛了,也不会影响主线程的执行.注意多核的cpu是同时运行的,单核的不是,单核是把cpu分成好多个时间片,第一秒执行主线程,第二秒执行线程1等

pastedGraphic_8.png

开启的线程就是在mutableThread这个函数上运行.

pastedGraphic_9.png

调用类方法

pastedGraphic_10.png

这个是调用NSObject的方法,也是可以开启线程的

pastedGraphic_11.png

第二种调用线程方式

pastedGraphic_12.png

第三种调用方式

pastedGraphic_13.png

[self ww:nil];

当线程调用方法完成后就会结束线程.


第四种

pastedGraphic_14.png

这种方式可以使用block语法.如果使用block可以访问main函数里的变量,如果是方法就不可以了.

pastedGraphic_15.png

pastedGraphic_16.png

NSOperationQueue是一个线程池子,里面可以放好多个线程,addOperation可以多次使用,从而添加多个线程,可以使多个线程并发使用.

pastedGraphic_17.png

pastedGraphic_18.png

pastedGraphic_19.png

也可以更改线程2的优先级别.

pastedGraphic_20.png

有的时候我们还需要从多线程跳回到主线程上面去,比如我们在函数中请求网络数据,当网络数据请求完毕后,我们需要刷新页面,这个时候需要调回到主线程,切记ui的操作都是在主线程上完成的,不要放到多线程上去.

pastedGraphic_21.png

pastedGraphic_22.png

pastedGraphic_23.png

如果我们创建多线程我们可以使用这种方式因为这种方式的性能比较好.特别是在多核的状态下.

pastedGraphic_24.png

 开启多线程一定要加入自动释放池. 




思考题

pastedGraphic_25.png


NSRunLoop的基本概念

pastedGraphic_26.png

我们的main函数到return就会结束程序就退出了,我们可以使用NSRunLoop来循环主函数不让它退出.

我们创建的UIApplication项目已启动就已经创建好了NSRunLoop,只是我们看不到.

pastedGraphic_27.png

在多线程上使用时间定时器一定要开启NSRunLoop主线程上不用的.

面试题:定时器在主线程上运行,每秒调用一个函数一次,但是这样精确吗?

答案是不精确,因为主线程做的事情很多难免有阻塞现象,若阻塞0.5秒,定时器就会延迟0.5秒,如果要解决这个办法就要在多线程上面去运行这个时间定时器.

必须加上NSRunLoop防止代码结束.

NSRunLoop的作用其实就是让定时器一直处于活动状态.

pastedGraphic_28.png

pastedGraphic_29.png

pastedGraphic_30.png

HTTP协议的基本概念

pastedGraphic_31.png

除了聊天程序外使用scoket,其它的都会用到HTTP协议.scoket是一个长连接状态,这样才可以实时通讯.HTTP服务器没有办法想你发送数据,只有你请求的时候才可以的.

客户端发出请求,然后服务器端根据你的请求响应你

pastedGraphic_32.png

比如打开网站就是get请求,索取网址

请求

pastedGraphic_33.png

Accept:请求的数据类型是文本或者是xml

Accept-Charset:编码方式

Accept-Encoding:是否有压缩.

Accept-Language:内容的语言.

响应

pastedGraphic_34.png

网络请求方式

pastedGraphic_35.png

我们day_02加载图片在主线程上就是同步请求.

访问网络的基本流程

pastedGraphic_36.png


















0 0