C/C++开发线程/进程相关面试题

1.多线程和多进程的区别

注意:(重点 必须从cpu调度,上下文切换,数据共享,多核cup利用率,资源占用,等等各方面回答,然后有一个问题必须会被问到:哪些东西是一个线程私有的?答案中必须包含寄存器,否则悲催)!

1)进程数据是分开的:共享复杂,需要用IPC(进程间通信),同步简单;多线程共享进程数据:共享简单,同步复杂

2)进程创建、销毁、切换复杂,速度慢 ;线程创建、销毁、切换简单,速度快

3)进程占用内存多, CPU利用率低;线程占用内存少, CPU利用率高

4)进程编程简单,调试简单;线程编程复杂,调试复杂

5)进程间不会相互影响 ;线程一个线程挂掉将导致整个进程挂掉

6)进程适应于多核、多机分布;线程适用于多核

线程所私有的:

线程id、寄存器的值、栈、线程的优先级和调度策略、线程的私有数据、信号屏蔽字、errno变量(存放错误码的全局变量 errno)

2. 多线程锁的种类有哪些?

a.互斥锁(mutex)b.递归锁 c.自旋锁 d.读写锁

3. 自旋锁和互斥锁的区别?

当锁被其他线程占用时,其他线程并不是睡眠状态,而是不停的消耗CPU,获取锁

你可能感兴趣的:(面试,linux,多线程)