Introduction Recipe 18.1. Creating Per-Thread Static Fields Recipe 18.2. Providing Thread-Safe Access to Class Members Recipe 18.3. Preventing Silent Thread Termination Recipe 18.4. Polling an Asynchronous Delegate Recipe 18.5. Timing out an Asynchronous Delegate Recipe 18.6. Being Notified of the Completion of an Asynchronous Delegate Recipe 18.7. Determining Whether a Request for a Pooled Thread Will Be Queued Recipe 18.8. Configuring a Timer Recipe 18.9. Storing Thread-Specific Data Privately Recipe 18.10. Granting Multiple Access to Resources with a Semaphore Recipe 18.11. Synchronizing Multiple Processes with the Mutex Recipe 18.12. Using Events to Make Threads Cooperate Recipe 18.13. Get the Naming Rights for Your Events Recipe 18.14. Performing Atomic Operations Among Threads |