resource counter() int count = 0 sem mutex = 1 # Semaphor zum Schutz von count # increment count by 100 process inc1000 [id=1 to 10] { int local int top = 100 for [j=1 to id] { # increment global counter - critical section P(mutex) local = count; writes(id,": get counter = ",local); write() for [k = 1 to top] { local += 1 }; nap(int(random()*100)) count = local; writes(id,": put counter = ",local); write() V(mutex) # wait for some time - non-critical section nap(int(random()*100)) } } final { write(count) } end counter