Hey guys, I've been looking over some various synchronization objects, and I'm having some difficulties distinguishing them. As far as I can see:
Mutex: Get ownership with WaitFor(xxx)Object(s)(), do something with the data in question, release with ReleaseMutex() or something along those lines.
Semaphore: Get ownership with WaitFor(xxx)Object(s)(), do something with the data in question, release with ReleaseSemaphore() or something along those lines
Critical Section: Get ownership with EnterCriticalSection(), do someting with the data in question, release with ExitCriticalSection().
What's the essential difference between the three, or are they readily interchangeable??