4、多处理器编程中的互斥算法详解

多处理器编程中的互斥算法详解

在多处理器编程领域,互斥是一种极为普遍的协调形式。本文将深入探讨经典的互斥算法,这些算法通过读写共享内存来实现互斥功能。虽然它们在实际应用中较少使用,但对于理解同步算法和正确性问题非常有帮助。

1. 时间相关概念

在并发计算中,对时间的推理至关重要。我们常常需要处理多个时间间隔的重叠或不重叠情况,因此需要一种简洁明了的语言来描述事件和时间持续。

  • 事件 :事件是瞬间发生的,即它们在某一时刻发生。为了方便处理,我们假设不同的事件不会同时发生。线程 A 会产生一系列事件,如 a0, a1, … 。我们用 aj
    i 表示事件 ai 的第 j 次发生。若事件 a 在事件 b 之前发生,我们记作 a → b ,这种先后关系是事件的全序关系。
  • 时间间隔 :设 a0 和 a1 是两个事件,且 a0 → a1 ,那么区间 (a0, a1) 就是这两个事件之间的持续时间。如果区间 IA = (a0, a1) 的最后一个事件在区间 IB = (b0, b1) 的第一个事件之前发生,即 a1 → b0 ,我们记作 IA → IB 。这种关系是区间的偏序关系,没有先后关系的区间被称为并发区间。
2. 临界区

在单线程系统中,某些类的实现是正确的,但在多线程环境下可能会出现问题。例如,下面的 Counter 类:

class Counter {
    private int value;
    public Count
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值