mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-20 03:20:18 +00:00
...
This commit is contained in:
parent
049d923958
commit
1e89045f82
10
src/common.h
10
src/common.h
@ -62,8 +62,18 @@
|
||||
|
||||
#if PK_ENABLE_THREAD
|
||||
#define THREAD_LOCAL thread_local
|
||||
#include <mutex>
|
||||
|
||||
struct GIL {
|
||||
inline static std::mutex _mutex;
|
||||
explicit GIL() { _mutex.lock(); }
|
||||
~GIL() { _mutex.unlock(); }
|
||||
};
|
||||
#define GLOBAL_SCOPE_LOCK() auto _lock = GIL();
|
||||
|
||||
#else
|
||||
#define THREAD_LOCAL
|
||||
#define GLOBAL_SCOPE_LOCK()
|
||||
#endif
|
||||
|
||||
/*******************************************************************************/
|
||||
|
@ -175,6 +175,7 @@ struct MemoryPool{
|
||||
void* alloc() { return alloc(sizeof(__T)); }
|
||||
|
||||
void* alloc(size_t size){
|
||||
GLOBAL_SCOPE_LOCK();
|
||||
#if DEBUG_NO_MEMORY_POOL
|
||||
return malloc(size);
|
||||
#endif
|
||||
@ -199,6 +200,7 @@ struct MemoryPool{
|
||||
}
|
||||
|
||||
void dealloc(void* p){
|
||||
GLOBAL_SCOPE_LOCK();
|
||||
#if DEBUG_NO_MEMORY_POOL
|
||||
free(p);
|
||||
return;
|
||||
@ -238,7 +240,6 @@ struct MemoryPool{
|
||||
}
|
||||
};
|
||||
|
||||
// TODO: make them thread-safe
|
||||
inline MemoryPool<64> pool64;
|
||||
inline MemoryPool<128> pool128;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user