diff options
author | chai <chaifix@163.com> | 2018-08-07 11:51:37 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2018-08-07 11:51:37 +0800 |
commit | a46931ada5343e8f5b863719c733f5bfc91c663f (patch) | |
tree | 243e77ea0ca1aa5a4b7a235be62efde22914b96e /src/libjin/thread/thread.h | |
parent | e4eeedbd6faaef380b58236745856b50cebf4461 (diff) |
*update
Diffstat (limited to 'src/libjin/thread/thread.h')
-rw-r--r-- | src/libjin/thread/thread.h | 48 |
1 files changed, 32 insertions, 16 deletions
diff --git a/src/libjin/thread/thread.h b/src/libjin/thread/thread.h index aeb0d9e..37c978d 100644 --- a/src/libjin/thread/thread.h +++ b/src/libjin/thread/thread.h @@ -42,23 +42,36 @@ namespace thread class Thread { public: - - union Variant + struct Variant { - int integer; - bool boolean; - char character; - const char* cstring; - void* pointer; - float real; - - Variant() {}; - Variant(int i) : integer(i) {}; - Variant(float f) : real(f) {}; - Variant(bool b) : boolean(b) {}; - Variant(char c) : character(c) {}; - Variant(const char* s) : cstring(s) {}; - Variant(void* p) : pointer(p) {}; + enum Type + { + NONE = 0, + INTERGER, + BOOLEAN, + CHARACTER, + CSTRING, + POINTER, + REAL, + }; + Type type; + union + { + int integer; + bool boolean; + char character; + const char* cstring; + void* pointer; + float real; + }; + Variant() :type(NONE) {}; + Variant(const Variant& v){ memcpy(this, &v, sizeof(v)); } + Variant(int i) : integer(i), type(INTERGER) {}; + Variant(float f) : real(f), type(REAL) {}; + Variant(bool b) : boolean(b), type(BOOLEAN) {}; + Variant(char c) : character(c), type(CHARACTER) {}; + Variant(const char* s) : cstring(s), type(CSTRING) {}; + Variant(void* p) : pointer(p), type(POINTER) {}; }; private: @@ -76,6 +89,8 @@ namespace thread static const int SLOT_ERROR = -1; static const int SLOT_WARN = -2; + static const int SLOT_INFO = -3; + static const int SLOT_DEBUG = -4; private: std::map<int, Variant> share; // threads shared value @@ -91,6 +106,7 @@ namespace thread bool receive(int slot); Variant fetch(int slot); Variant demand(int slot); + void remove(int slot); const char* getName(); bool isRunning(); void lock(); |