网络多线程(1)--简介

1.进程和线程的区别与联系是什么?

一个程序至少有一个进程,一个进程至少有一个线程:
进程:一个程序的一次运行,在执行过程中拥有独立的内存单元,而多个线程共享一块内存
线程:线程是指进程内的一个执行单元。
联系:线程是进程的基本组成单位
区别:(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位
      (2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行 
      (3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源.       
      (4) 系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。
举例说明:操作系统有多个软件在运行(QQoffice、音乐等),这些都是一个个进程,而每个进程里又有好多线程(比如QQ,你可以同时聊天,发送文件等)     

2.移动端开发需遵循的原则

      1>复杂的业务逻辑/需要加锁的代码,资源抢夺等业务逻辑交给服务器端处理,减小移动客户端的压力;
     2>所有属性都声明为 nonatomic!尽量避免多线程抢夺同一块资源);
     3>如果是面向线程对象开发,需要手动管理线程的生命周期(GCD不需要,它是面向任务);
     4>所有的耗时操作(所有的网络请求必须放在子线程!/大数据的计算/复杂的计算/文件解压缩操作)必须放在子线程执行!
     5>所有的UI操作(刷新数据、处理UI事件)都放在主线程(也叫UI线程,主要是优先保证用户交互);
     6>不同线程间的数据交换(线程间通信)需要保证安全,保证执行顺序;
     7>线程最多开启6条(3-5条);

1   3.为什么会出现数据安全问题?资源抢夺有哪些解决办法?

     1)因为不同的线程同时执行任务,同时访问统一资源。如果异步操作要保证线程安全等问题, 尽量使用GCD(有些函数默认就是安全的)
     2)资源抢压解决办法:
1> @synchronized(xx) {...}    互斥锁
2> NSLock                  同步锁
3> dispatch_barrior_async    作用是在并行队列中,等待前面两个操作并行操作完成
4> dispatch_semaphore_wait   等待信号:等待有线程结束之后会增加一个信号才继续执行

4.NSThread 开启线程的方式及属性



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值