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

📄 fastlock.h

📁 C/C++ 多任务下的数据结构与算法 (周伟明)华中科技大学出版社
💻 H
字号:
/*
 * Copyright (c) 2006-2008
 * Author: Weiming Zhou
 *
 * Permission to use, copy, modify, distribute and sell this software
 * and its documentation for any purpose is hereby granted without fee,
 * provided that the above copyright notice appear in all copies and
 * that both that copyright notice and this permission notice appear
 * in supporting documentation.  
 */

/* 
 *	FastLock.h
 *
 *	DESCRIPTION
 *		base definition for fast lock and spin lock operation.
 *
 *	HISTORY
 *		04-26-2008	create by zhouweiming.
 *
 */
#ifndef __FASTLOCK_H__
#define __FASTLOCK_H__

#if _WIN32 || _WIN64
#if _WIN32_WINNT < 0x0404
#undef _WIN32_WINNT
#define _WIN32_WINNT  0x0404
#endif
#include <windows.h>
#else
#include <pthread.h>
#endif /* _WIN32 || _WIN64 */



#if _WIN32 || _WIN64


#define  FASTLOCK					CRITICAL_SECTION
#define  FastLockInit(x)			InitializeCriticalSection(x)
#define  FastLockAcquire(x)			EnterCriticalSection(x)
#define  FastLockTryAcquire(x)		TryEnterCriticalSection(x)
#define  FastLockRelease(x)			LeaveCriticalSection(x)
#define  FastLockClose(x)			DeleteCriticalSection(x)

#define  SPINLOCK					CRITICAL_SECTION
#define  SpinLockInit(x, num)	    InitializeCriticalSectionAndSpinCount(x, num)
#define  SpinLockAcquire(x)			EnterCriticalSection(x)
#define  SpinLockTryAcquire(x)		TryEnterCriticalSection(x)
#define  SpinlockRelease(x)			LeaveCriticalSection(x)
#define  SpinLockClose(x)			DeleteCriticalSection(x)

#else

#define  FASTLOCK					pthread_mutex_t
#define  FastLockInit(x)			pthread_mutex_create(x, NULL)
#define  FastLockAcquire(x)			pthread_mutex_lock(x)
#define  FastLockTryAcquire(x)		pthread_mutex_trylock(x)
#define  FastlockRelease(x)			pthread_mutex_unlock(x)
#define  FastLockClose(x)			pthread_mutex_destroy(x)

#define SPINLOCK					pthread_spinlock_t
#define SpinLockInit(lock, num)		pthread_spin_init(lock, num)
#define SpinLockAcquire(lock)		pthread_spin_lock(lock)
#define SpinLockRelease(lock)		pthread_spin_unlock(lock)
#define SpinLockTryAcquire(lock)	pthread_spin_trylock(lock)
#define SpinLockClose(lock)			pthread_spin_destroy(lock)

#endif /* _WIN32 || _WIN64 */


#endif /* __FASTLOCK_H__ */

⌨️ 快捷键说明

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