If, for example, two threads are created to print separate documents, it's possible for one thread to change Printing to zero before the second thread finishes. You either need Printing to be a count of the total number of threads, or you need some method of locking the Printing variable so that it can't be changed to zero until all threads are finished. You need a Semaphore. Semaphores Semaphores are special variables which are created and managed by Windows. Windows will then create a variable with that name, internally.
Semaphores are perfect for letting threads keep track of each other.
But they're not very useful for sharing data. Occasionally, multiple threads may need to share data with each other. In our word processor we want to be able to print documents and edit them at the same time. Keeping two complete copies of the document in memory is very wasteful. A better method would be to keep a single copy of the document in memory and have each thread store only the changes it has made.