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

本文详细探讨了C/C++中多线程和多进程的区别,包括上下文切换、数据共享、CPU利用率等方面。还讲解了线程锁的类型,如互斥锁、自旋锁、读写锁等,并对比了自旋锁和互斥锁的特性。此外,文章涵盖了进程间通信和线程间通信的方式,以及多线程程序架构中线程数量的设置策略。同时,讨论了原子操作的概念和在实现读写锁中的应用,以及网络编程设计模式,如reactor和proactor模式。
摘要由CSDN通过智能技术生成

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

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

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

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

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

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

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

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

线程所私有的:

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

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值