The Windows Thread Synchronization Win32 Programming







Windows Process and Thread



What do we have in this session?


As one of the important topics related to Windows process and thread, this tutorial tries to explain the details of the process and thread synchronization techniques used in Windows. The program examples also try to demonstrate several 'issues' related to concurrency that exists such as deadlock, race condition, starvation etc. and how the synchronization methods used can 'reduce' those problems.

  1. Intro

  2. Process and Thread Revisited

  3. Atomicity

    Windows Thread States

  4. Wait Functions

  5. Single-object Wait Functions

    Multiple-object Wait Functions

    Alertable Wait Functions

    Registered Wait Functions

    Wait Functions and Time-out Intervals

    Wait Functions and Synchronization Objects

    Wait Functions and Creating Windows

  6. Synchronization Objects

  7. Events

  8. Mutex and Semaphore

  9. Interprocess Synchronization

  10. Object Names

    Object Inheritance

    Object Duplication

    Other Synchronization Mechanisms

    Synchronization and Overlapped Input and Output

  11. Asynchronous Procedure Calls (APC)

  12. Synchronization Internals

    Critical Section Objects

  13. Condition Variables

  14. Slim Reader/Writer (SRW) Locks

    One-Time Initialization

    One-Time Initialization: Synchronous Mode

    One-Time Initialization: Asynchronous Mode

  15. Interlocked Variable Access

  16. The Interlocked API

    Interlocked Singly Linked Lists

    Timer Queues

  17. Concurrency and Race Conditions

  18. Race Condition Program Example

  19. Concurrency, Deadlocks and Livelocks

  20. Liveness

    Deadlock Example - The Dining Philosophers

  21. Deadlock and Critical Section Program Example

  22. Starvation

  23. Livelock

    Program Examples on Using Synchronization Objects




  1. The WaitForSingleObject() Example

  2. The WaitForMultipleObjects() Example

  3. Waiting for Multiple Objects Example

  4. Using Named Objects Program Examples

  5. The First Process Program Example

  6. Second Process Program Example

  7. Using Event Objects Program Example

  8. Using Mutex Objects Program Example

  9. Another Mutex Program Example

  10. Using Semaphore Objects Program Example

  11. Another Semaphore Program Example

  12. Six philosophers with six chopsticks

  13. Starvation Issue

    The Six philosophers with Semaphore Program Example

  14. Using Waitable Timer Objects Program Example

  15. Using Waitable Timers with an Asynchronous Procedure Call Program Example

  16. Using Critical Section Objects Program Example

  17. Another Critical Section Program Example

  18. More Critical Section Program Examples

  19. Using Condition Variables Program Example

  20. Using One-Time Initialization Program Example

  21. The Synchronous Example

  22. Asynchronous Example

  23. Using Singly Linked Lists Program Example

  24. Using Timer Queues Program Example

  25. The Interlocked Functions Program Example 1

  26. The Interlocked Functions Program Example 2

  27. The Interlocked Functions Program Example 3

  28. Extra Synchronization Related working Program Examples

  29. Creating a Single Thread Program Example

  30. Canceling a Thread Program Example

  31. The Multithread without any synchronization Program Example

  32. Synchronization with Interlocked Exchange Program Example

  33. Some Notes for IA64

  34. Synchronization with Spinlocks Program Example

  35. Synchronization Using Mutexes Program Example

  36. Synchronization with Critical Sections Program Example

  37. Synchronization Using Semaphores Program Example

  38. Terminal Server and Naming Semaphore Objects

  39. Thread Scheduling and Prioritizing

  40. Managing Thread Priorities in Windows

  41. Windows Scheduling Program Example

  42. Thread Scheduling Program Example

  43. Managing Multiple Threads Program Example

  44. Multiple Threads Example

    More: Synchronization Reference

< Process Status Help APIs | Win32 Programming | Thread Synchronization 1 >