实验一 线程同步
计科1304班梁玮
实验目的
通过观察计算机运行时线程的同步执行,进而在实践中加深对线程同步的理解。
实验内容
本次实验旨在产生一种多线程执行时的矛盾问题,并寻找方法解决这个问题。为了产生矛盾,首先要建立两个操作相同的线程,并且让它们同时访问两个全局变量accnt1和accnt2,每次访问都给accnt1和accnt2分别加上和减去相同的数,最后在将accnt1和accnt2求和,观察两个账户的余额之和将永远是0。线程一旦检测到混乱的发生,便终止循环并打印交易的次数(counter)。
实验步骤
问题提出——不采取任何措施
#include stdio.h
#include stdlib.h
#include windows.h
int accnt1 = 0;
int accnt2 = 0;
DWORD WINAPI run(LPVOID p){
int counter = 0;
int tmp1,tmp2,r;
int id = (int)p;
do{
r = rand();
tmp1 = accnt1;
accnt1 = tmp1 + r;
tmp2 = accnt2;
accnt2 = tmp2 - r;
counter++;
}while(accnt1 + accnt2 == 0);
pr
原创力文档

文档评论(0)