自旋锁和死锁
时间:2010-04-10 来源:杨铁柱嵌入式
自旋锁用于防止多个任务同时对可执行队列进行操作。它们起的作用就像门钥匙一样。最开始,有一个任
务到了大门前,它拿起钥匙开了门,走进去以后回身把大门锁上。如果这时第二个任务到了大门前,它发
现门锁着(已经有一个进程在里面了),就坐在门口等,知道第一个任务走出来交出钥匙。这个等待过程
叫自锁,因为实际上任务是在不停地执行一个循环操作来查询钥匙是否被交出来了。
现在想象一下,一号任务希望先锁住可执行队列甲,然后再去锁队列乙,而二号任务想先锁可执行队列乙
,然后再去锁甲。如果在一号任务锁住甲的同时二号任务锁住了乙。现在,一号任务再去尝试着锁乙而二
号任务去锁甲。两个都变成了不可完成的任务,因为它俩无论谁需要的那把锁,都掌握在另一个的手中。
两个任务就这样一起永远的等待下去。就像相向而行的汽车僵持会造成交通堵塞一样,这种对锁的无序使
用会导致任务之间互相等待,不死不休,也就是死锁。
如果两个任务用相同的顺序操作锁,这种局面就不会产生了。
相关阅读 更多 +
排行榜 更多 +