ppq的面试题总结

ppq的面试题总结

C++

#include的顺序以及尖括号和双引号的区别

#include ""

按照:当前头文件目录--->编译器设置的头文件路径(编译器可使用-I显式指定搜索路径)
--->系统变量CPLUS_INCLUDE_PATH/C_INCLUDE_PATH指定的头文件路径

#include <>

按照:编译器设置的头文件路径(编译器可使用-I显式指定搜索路径)--->系统变量CPLUS_INCLUDE_PATH/C_INCLUDE_PATH指定的头文件路径

进程和线程,为什么要有线程

什么是进程

  • 程序执行时的一个实例,有独立的内存地址空间
  • 是系统进行资源分配和调度的基本单位
  • 进程里的堆是一个进程中最大的一块内存,被进程中所有的线程共享的,在进程创建时分配,存放的是new 出来的对象
  • 进程里的方法去是用来存放进程中的代码片段的,是线程共享的
  • 在多线程的OS中,进程不是一个可执行的实体,即一个进程至少创建一个线程去执行代码

什么是线程

  • 是进程中的一个实体
  • 进程的一个执行路径
  • CPU调度和分派的基本单位
  • 线程本身不会独立存在
  • 当前线程CPU时间片用完后,会让出CPU等下次轮到自己时候在执行
  • 系统不会为线程分配内存,线程组之间只能共享进程的资源
  • 线程只拥有在运行中必不可少的资源(程序计数器、栈)
  • 线程里的程序计数器就是为了记录该线程让出CPU时候的执行地址,待再次分配到时间片时候就可以从自己私有的计数器指定地址继续执行
  • 每个线程都有自己的栈资源,用于存储该线程的局部变量和调用帧栈,其他线程无权调用

为什么要有线程

每个进程都有自己的地址空间,即进程空间。

​ 一个服务器通常需要接收大量并发请求,为每一个请求都创建一个进程系统开销大、请求响应效率低,因此操作系统引进线程。

猜你喜欢

转载自www.cnblogs.com/buerdepepeqi/p/12362680.html
今日推荐