ABABAABB
A2B2A3A5B5B6
unsigned int balance = 100; int T_alipay_withdraw(int amt) { if (balance >= amt) { balance -= amt; return SUCCESS; } else { return FAIL; } }
两个线程并发支付 ¥100 会发生什么 (代码演示)
#define N 100000000 long sum = 0; void T_sum() { for (int i = 0; i < N; i++) sum++; } int main() { create(T_sum); create(T_sum); join(); printf("sum = %ld\n", sum); }
buf[pos++] = ch
T_sum
void T_sum() { for (int i = 0; i < 3; i++) { int t = load(sum); t += 1; store(sum, t); } }
i
证明:∀\forall∀ 线程调度方法,程序满足 XXX 性质。