⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 synchronize.h

📁 一个双向栈的C++实现
💻 H
字号:
#ifndef SYNCHRONIZE_H_#define SYNCHRONIZE_H_#ifdef WIN32#include <process.h>#include <winbase.h>#else#include <stdlib.h>#include <glib.h>#include <glib/gatomic.h>#include <glib/gthread.h>#endifclass CAtomic{   public:	static int AtomicExchangeAdd(volatile int* var, int val);	static void AtomicAdd(volatile int* var, int value);	static int AtomicCompareExchange(volatile int* var, int oldval, int newval);	static int AtomicExchange(volatile int* var, int value);private:	CAtomic(void);	~CAtomic(void);	};class CLock{private:#ifdef WIN32	CRITICAL_SECTION m_lock;#else	GMutex* m_lock;#endifpublic:	void Lock(void);	void UnLock(void);	int TryLock(void);public:	CLock(void);	~CLock(void);};#ifdef WIN32inline int CAtomic::AtomicExchangeAdd(volatile int* var, int val){	return InterlockedExchangeAdd((long*)var, val);}inline void CAtomic::AtomicAdd(volatile int* var, int val){	InterlockedExchangeAdd((long*)var, val);}inline int CAtomic::AtomicCompareExchange(volatile int* var, int oldval, int newval){	return InterlockedCompareExchange((long*)var, newval, oldval);}inline int CAtomic::AtomicExchange(volatile int* var, int value){	return InterlockedExchange((long*)var, value);}///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////inline CLock::CLock(void){	InitializeCriticalSection(&m_lock);}inline CLock::~CLock(void){	DeleteCriticalSection(&m_lock);}inline void CLock::Lock(void){	EnterCriticalSection(&m_lock);}inline void CLock::UnLock(void){	LeaveCriticalSection(&m_lock);}inline int CLock::TryLock(void){	return TryEnterCriticalSection(&m_lock);}#elseinline int CAtomic::AtomicExchangeAdd(volatile int* var, int val){	return g_atomic_int_exchange_and_add((gint*)var, val);}inline void CAtomic::AtomicAdd(volatile int* var, int val){	g_atomic_int_add((gint*)var, val);}inline int CAtomic::AtomicCompareExchange(volatile int* var, int oldval, int newval){	return g_atomic_int_compare_and_exchange((gint*)var, oldval, newval);}inline int CAtomic::AtomicExchange(volatile int* var, int value){	return g_atomic_int_exchange((gint*)var, value);}///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////inline CLock::CLock(void){	if(!g_thread_supported())	{		g_thread_init(NULL);	}	m_lock = g_mutex_new();}inline CLock::~CLock(void){	g_mutex_free(m_lock);}inline void CLock::Lock(void){	g_mutex_lock(m_lock);}inline void CLock::UnLock(void){	g_mutex_unlock(m_lock);}inline int CLock::TryLock(void){	return g_mutex_trylock(m_lock);}#endif#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -