1.多线程和多进程的区别
注意:(重点 必须从cpu调度,上下文切换,数据共享,多核cup利用率,资源占用,等等各方面回答,然后有一个问题必须会被问到:哪些东西是一个线程私有的?答案中必须包含寄存器,否则悲催)!
1)进程数据是分开的:共享复杂,需要用IPC(进程间通信),同步简单;多线程共享进程数据:共享简单,同步复杂
2)进程创建、销毁、切换复杂,速度慢 ;线程创建、销毁、切换简单,速度快
3)进程占用内存多, CPU利用率低;线程占用内存少, CPU利用率高
4)进程编程简单,调试简单;线程编程复杂,调试复杂
5)进程间不会相互影响 ;线程一个线程挂掉将导致整个进程挂掉
6)进程适应于多核、多机分布;线程适用于多核
线程所私有的:
线程id、寄存器的值、栈、线程的优先级和调度策略、线程的私有数据、信号屏蔽字、errno变量(存放错误码的全局变量 errno)
2. 多线程锁的种类有哪些?
a.互斥锁(mutex)b.递归锁 c.自旋锁 d.读写锁
3. 自旋锁和互斥锁的区别?
当锁被其他线程占用时,其他线程并不是睡眠状态,而是不停的消耗CPU,获取锁