Chapter 7 demonstrates the different synchronization mechanisms available in the Win32 API. The MFCSYNC directory contains an example that shows how to use these mechanisms in an MFC program without stalling the event loop. BUFFER.CPP This code demonstrates a solution to the bounded buffer problem using semaphores. CHAP6.MAK Visual C++ project file. Change the file in the project to compile the different examples in this directory. CRITSEC.CPP This code demonstrates the use of a critcal section to synchronize threads. DINPHIL.CPP This code demonstrates the dining philosophers problem that can fail due to deadlock. DINPHIL2.CPP This code demonstrates a solution to the dining philosopher problem that cannot deadlock. EVENT.CPP This code demonstrates the use of an event to synchronize threads. FILEFIND.CPP This code demonstrates the use of asynchronous change functions. FILEOVEX.CPP This code demonstrates the use of completion routines. FILEOVLP.CPP This code demonstrates the use of overlapped file I/O. MAKEFILE Change the APP variable in the makefile to compile the different examples in this directory. MUTEX.CPP This code demonstrates the use of a mutex to synchronize threads. MUTEX2.CPP This code demonstrates how separate threads can open a mutex. Compare to mutex.cpp. PROB1.CPP This code demonstrates a simple problem that arises when threads in a multi-threaded applications interact with one another through a shared resource. PROB2.CPP This code shows normal implementations for a stack's push and pop operations that fail when used in a multi-threaded environment. RW.CPP This code demonstrates a solution to the reader-writer problem. SEMA.CPP This code demonstrates the use of a semaphore to synchronize threads.