Skip to content

Instantly share code, notes, and snippets.

@gekomad
Created March 6, 2016 19:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gekomad/267b884dac64d4a4e68d to your computer and use it in GitHub Desktop.
Save gekomad/267b884dac64d4a4e68d to your computer and use it in GitHub Desktop.
C++ Mutex class
/*
Cinnamon UCI chess engine
Copyright (C) Giuseppe Cannella
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#if defined(_WIN32)
#include <windows.h>
class Mutex {
public:
Mutex() { InitializeCriticalSection(&cs); }
~Mutex() { DeleteCriticalSection(&cs); }
void lock() { EnterCriticalSection(&cs); }
void unlock() { LeaveCriticalSection(&cs); }
private:
CRITICAL_SECTION cs;
};
#else
#include <mutex>
class Mutex : public std::mutex {
};
#endif
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment