Для винды есть "родной" объект mutex, пригоден для синхронизации между потоками. API для работы с ним: CreateMutex, ReleaseMutex, CloseHandle. Есть еще "critical section", она непригодна для синхронизации между процессами. API: InitializeCriticalSection, EnterCriticalSection, LeaveCriticalSection, DeleteCriticalSection. Примеры, подробная документация - в MSDN.