Define CRITICAL_SECTION for Linux
Wer schon mal ein Tool von Windows nach Linux konvertiert hat, wird auch schon mal über das Problem der critical sections gestolpert sein.
Wenn nicht viel Zeit dazu verwendet werden soll die Mutexe auf eine Platormübergreifende Version umzustellen kann sich mit ein paar wenigen Hilfsmitteln eine kompatible Schicht für Linux erstellen
#define CRITICAL_SECTION pthread_mutex_t
#define EnterCriticalSection pthread_mutex_lock
#define LeaveCriticalSection pthread_mutex_unlock
#define InitializeCriticalSection(object) pthread_mutex_init(object, nullptr)
#define DeleteCriticalSection pthread_mutex_destroy
Durch diese wenigen defines können die pthread mutexe auf selbe weise wie unter Windows genutzt werden. Beispiel:
#ifndef WIN32
#define CRITICAL_SECTION pthread_mutex_t
#define EnterCriticalSection pthread_mutex_lock
#define LeaveCriticalSection pthread_mutex_unlock
#define InitializeCriticalSection(object) pthread_mutex_init(object, nullptr)
#define DeleteCriticalSection pthread_mutex_destroy
#endif
void CriticalSectionExample(void)
{
static CRITICAL_SECTION oCriticalSection;
InitializeCriticalSection(&oCriticalSection);
EnterCriticalSection(&oCriticalSection);
LeaveCriticalSection(&oCriticalSection);
DeleteCriticalSection(&oCriticalSection);
}