杂谈

一、硬链接与软连接

硬链接与源文件指向同一个inode,删除原文件,硬链接不受影响。

软连接相当于一个快捷方式,独立于原文件,删除软连接不影响原文件,原文件删除软连接失效。


二、信号

1、使用signal安装一个信号处理函数,systemV语义在调用信号处理函数前会将信号处理回复为默认,且调用信号处理函数时没有设置掩码阻塞后续信号到来。

编译时gcc 使用了 编译选项 -std=xxx 会使用systemV语义,详见man pages。

2、通过掩码阻塞一个信号,该信号信号产生时会进入信号等待队列,待解除阻塞后递送。非实时信号不支持排队,因为内核用位来记录该信号,信号产生多次,队列里只记录一次。一个信号产生时,先看该信号是否屏蔽,如已屏蔽则进入等待队列,否则调用信号处理函数或执行默认动作。

3、多线程下,信号掩码是线程级的,每个信号可以由单独的掩码,信号的处置和动作时进程级的。注册了信号处理函数时,内核会任选一个线程执行处理函数。


三、线程互斥与同步

1、互斥锁:拿不到锁时阻塞,直到锁可用。避免死锁:以相同的顺序加锁,反序解锁。

2、条件变量:阻塞直到发来通知,有徦醒的问题,用while替代if判断睡眠条件

3、自旋锁:拿不到锁时忙等,直到锁可用。适用于加锁时间不长的场景。多用于内核,应用层较少。

4、读写锁:同时可以拿到多把读锁,写锁只能获取一个,适用读者多,写者少的场景。

5、屏障:设置一道屏障,指定数量的线程都就绪了各线程才继续往下执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值