cross-platform define update

This commit is contained in:
hyzboy 2019-12-10 14:38:29 +08:00
parent 2d8da351ba
commit 1bfb503e13
6 changed files with 25 additions and 14 deletions

View File

@ -50,7 +50,7 @@ inline T *hgl_aligned_malloc(size_t n)
} }
#define OS_EXTERNAL_H <dlfcn.h> #define OS_EXTERNAL_H <dlfcn.h>
typedef void * ExternalModulePointer; using ExternalModulePointer =void *;
#define pi_get dlsym #define pi_get dlsym
#define pi_close dlclose #define pi_close dlclose

View File

@ -59,7 +59,7 @@ using os_char =wchar_t;
#endif// #endif//
#define OS_EXTERNAL_H <winbase.h> #define OS_EXTERNAL_H <winbase.h>
typedef HMODULE ExternalModulePointer; using ExternalModulePointer =HMODULE;
#define pi_get GetProcAddress #define pi_get GetProcAddress
#define pi_close FreeLibrary #define pi_close FreeLibrary
@ -74,6 +74,10 @@ typedef HMODULE ExternalModulePointer;
using hgl_thread_mutex =CRITICAL_SECTION; using hgl_thread_mutex =CRITICAL_SECTION;
using thread_ptr =HANDLE; using thread_ptr =HANDLE;
using rwlock_ptr =SRWLOCK;
using semaphore_ptr =HANDLE;
using conv_var_ptr =CONDITION_VARIABLE;
#define THREAD_FUNC DWORD WINAPI #define THREAD_FUNC DWORD WINAPI
#define HGL_THREAD_DETACH_SELF #define HGL_THREAD_DETACH_SELF
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@ -3,13 +3,26 @@
#include<pthread.h> #include<pthread.h>
#ifdef __APPLE__
#include<dispatch/dispatch.h>
#endif//__APPLE__
namespace hgl namespace hgl
{ {
using hgl_thread_mutex =pthread_mutex_t; using hgl_thread_mutex =pthread_mutex_t;
using thread_ptr =pthread_t; using thread_ptr =pthread_t;
using THREAD_FUNC =void *; using rwlock_ptr =pthread_rwlock_t *;
#ifdef __APPLE__
using semaphore_ptr =dispatch_semaphore_t *;
#else
using semaphore_ptr =sem_t *;
#endif//
using cond_var_ptr =pthread_cond_t *;
#define THREAD_FUNC void *
#define HGL_THREAD_DETACH_SELF pthread_detach(pthread_self()); #define HGL_THREAD_DETACH_SELF pthread_detach(pthread_self());
}//namespace hgl }//namespace hgl
#endif//HGL_POSIX_THREAD_INCLUDE #endif//HGL_POSIX_THREAD_INCLUDE

View File

@ -12,7 +12,7 @@ namespace hgl
*/ */
class CondVar class CondVar
{ {
void *cond_var; conv_var_ptr *cond_var;
public: public:

View File

@ -9,14 +9,14 @@ namespace hgl
*/ */
class RWLock ///读写锁/共享锁 class RWLock ///读写锁/共享锁
{ {
void *lock; rwlock_ptr *lock;
public: public:
RWLock(); RWLock();
virtual ~RWLock(); virtual ~RWLock();
void *GetRWLock(){ return lock; } ///<返回操作系级锁 rwlock_ptr *GetRWLock(){ return lock; } ///<返回操作系级锁
bool TryReadLock(); ///<尝试读(共享访问)锁定 bool TryReadLock(); ///<尝试读(共享访问)锁定
bool ReadLock(); ///<读(共享访问)锁定 bool ReadLock(); ///<读(共享访问)锁定

View File

@ -1,9 +1,7 @@
#ifndef HGL_SEMAPHORE_INCLUDE #ifndef HGL_SEMAPHORE_INCLUDE
#define HGL_SEMAPHORE_INCLUDE #define HGL_SEMAPHORE_INCLUDE
#ifdef __APPLE__ #include<hgl/platform/Platform.h>
#include<dispatch/dispatch.h>
#endif//__APPLE__
namespace hgl namespace hgl
{ {
@ -13,11 +11,7 @@ namespace hgl
*/ */
class Semaphore ///信号 class Semaphore ///信号
{ {
#ifdef __APPLE__ semaphore_ptr ptr;
dispatch_semaphore_t ptr;
#else
void *ptr;
#endif//__APPLE__
public: public: