C面试准备.docx

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C面试准备

多线程并发线程与进程的区别:(1)进程是程序的一次执行过程,而线程是进程里的一段程序碎片。(2)资源管理器里就可以查看进程,进程是资源分配的单位,每个进程里的线程共同享有进程里的资源。(3)线程是处理器调度的最小单位,而进程不是。(4)线程和进城都可以并发执行。(5)一个进程可以有一个或多个线程,进程之间不享有相同的存储地址,而线程共享进程的地址。进程的三种基本状态就绪状态进程已分配到除CPU以外的所有资源,但是没有得到处理机执行状态进程已获得处理机,程序正在处理机上执行阻塞状态进程在处理机上执行的过程中,遇到了等待某事物无法进行,便放弃处理机处于阻塞状态。进程之间怎样通信:信号、管道、socket套接字、信号量、消息队列、共享内存3、1 套接字的使用方式客户端:调用socket()创建一个套接字,并连接到服务器端。调用socket的getOutputstream和fetInputstream获取输出流和输入流,开始网络数据的接收流和输出流。关闭通信套接字socket.Close()。线程之间通信方式:锁(互斥锁,读写锁,条件变量)信号量机制信号机制线程之间通信主要是为了线程同步,所以线程没有进程那种用于交换的机制。进程同步与线程同步:定义:进程同步是指多个相关进程在执行次序上的协调以达到互斥地使用临界区资源。线程同步是指采用一些机制来保证同一时刻只允许最多一个线程访问资源,以此避免死锁等发生。线程同步方法:临界区:最多一个线程可以访问临界区资源互斥量:只允许含有互斥对象的线程访问信号量:是一个计数器,允许多个线程访问同一个资源,但是同时访问资源的线程数有上限。事件:通过通知操作来死锁死锁是多个进程因为争夺资源而产生互相等待,若无外力,进程无法推进的情况死锁产生的三个原因是:(1)系统资源不足(2)系统资源分配不合理(3)进程推进顺序不合理死锁的必要条件:(1)互斥条件一个资源只允许一个进程使用(2)等待与保持条件一个进程在请求资源时阻塞,对已获得的资源保持不放(3)不剥夺条件一个进程在使用资源,并且未使用完时,其他进程不能剥夺此资源(4)循环等待条件多个进程循环等待一个资源死锁的解除和预防:死锁的预防:采用资源静态分配策略、破坏部分分配条件;允许进程剥夺其他进程的资源;采用资源有序分配法,避免循环等待。死锁的避免:银行家算法。每次进程申请资源时,都先判断进程是否会导致死锁,死锁的检测:死锁检测算法。检测是否有死锁发生,比如一个资源可以看到有向图是否有环死锁恢复:如果存在死锁,就死锁恢复,比如死锁的进程撤销,回收其占用资源。活锁:活锁指任务和执行者没有被阻塞,但是不断调用,并因某些因素而调用失败,一直重复失败中。活锁的例子:单一实体的活锁:进程在队列中获取某任务执行,因某原因执行失败后,任务重新加入队列,再执行。协同导致的活锁:两个线程发生某些条件的碰撞,再次尝试依然发生碰撞。活锁的解决:加入一些随机性,约定重复机制饥饿:进程无限次申请资源并被推后,一直无法执行。Ios实现多线程:c++实现多线程:GCD是苹果专门为多核操作系统研发的自动多线程管理机制:创建线程,调度任务,销毁线程。将要执行的任务,就是block区分其执行方式是同步执行还是异步执行,如果会阻塞当前线程并等待block中任务执行完毕,就是同步操作。如果是异步操作,他不会阻塞当前线程,会另开辟一个线程执行。又分串行队列和并行队列。并行和并发区别:并发是一个cpu在一个时间段上同时运行,而并行是多个cpu在同一时刻运行多个程序。C++实现多线程:线程池以前执行多线程是即时创建、即使销毁,而且同时执行的线程数量没有上限,所以开销很大,如任务时间很短,但另开线程的情况。而使用线程池是采用预处理的方法,减少了创建线程的个数。通常线程池中的所允许的并发线程是有限的。在程序启动后,立即创建一定数量的线程,放入空闲队列中,处于阻塞状态,所以并不销毁cpu,只占用很小的内存空间。任务到来,会开一个线程池中的空闲线程处理任务,处理完线程并不销毁,继续等待下一次任务。线程池分为:线程池管理器、工作线程、任务接口、任务队列。分别用来创建和管理线程池,线程池中实际执行的线程、线程执行的任务抽象出来形成任务接口使得线程池与具体的任务无关,网络通信TCP和UDP异同点共同点:TCP和UDP都处于网络层之上,属于传输层协议,都提供接口。不同点:TCP是传输控制协议,面向连接。而UDP是数据报协议,面向数据报。 TCP协议传输须在用户与服务器间建立连接后,才可互相传输。而UDP协议不需提前建立连接,故UDP协议传输快。TCP提供超时重发、丢弃重复数据等功能,保证数据可从一端传入另一端。而UDP只负责将数据报发出去,不保证数据会被接收,所以UDP协议不可靠性高。TCP在发送数据报前会对两端进行三

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档