自旋锁与信号量

在中断上下文中只能使用自旋锁;在任务睡眠时,只能使用信号量;

自旋锁

自旋锁最多只能被一个执行线程所持有(忙循环--旋转--等待锁重用);

自旋锁不应该被长时间持有;

自旋锁不会导致睡眠,可以在中断处理程序中使用;

 

 

 读--写自旋锁

 一个或多个读任务可以并发的持有读者锁;

对于写锁,最多只能被一个写任务持有;且要等待所有的读锁释放时,才开始进行写任务;

 

信号量

信号量,是一种睡眠锁;适用于被长时间持有的任务中;

在发生争用时,等待的线程可以投入睡眠,而不是旋转等待;

信号量不会禁止内核抢占;可以允许任意数量的锁持有者(互斥信号量除外);

 

 

 

 

posted on 2020-05-16 13:38  裸睡的猪  阅读(321)  评论(0编辑  收藏  举报