8.1 临界区和竞争条件 2转
<br />加锁<br /> 现在我们来讨论一个更为复杂的竞争条件,相应的解决方法也更为复杂。假设需要处理一个队列上的所有服务请求,我们可以任意选一种方法实现这个队列,这里我们假定该队列是一个链表,链表中的每个节点就代表一个请求。有两个函数可以用来操作此队列:一个函数将新请求添加到队列尾部,另一个函数从队列头删除请求,然后处理它。内核各个部分都会调用这两个函数,所以内核会频繁地将在队列中加入请求,从队列中删除和处理请求。对请求队列的操作无疑要用到多条指令。如果一个线程试图读取队列,
复制链接