These files demonstrate some features of concurrent programming

badcnt.c:
	Demonstrates race condition when 2 threads access common
	global variable.

oldbadcnt.c:
	Old version of badcnt.c that didn't declare global variable
	as volatile.  Caused interesting interactions with optimizing compiler.

cnt.c, cnt.s:
	Shows the code generated for the two versions of badcnt.

goodcnt.c:
	Corrected version using semaphores for mutual exclusion

deadcnt.c:
	Demonstrates deadlock where two processes acquire two semaphores
	in opposite orders.

	