1*3cb1fd8eSs.makeev_local // The MIT License (MIT) 2*3cb1fd8eSs.makeev_local // 3*3cb1fd8eSs.makeev_local // Copyright (c) 2015 Sergey Makeev, Vadim Slyusarev 4*3cb1fd8eSs.makeev_local // 5*3cb1fd8eSs.makeev_local // Permission is hereby granted, free of charge, to any person obtaining a copy 6*3cb1fd8eSs.makeev_local // of this software and associated documentation files (the "Software"), to deal 7*3cb1fd8eSs.makeev_local // in the Software without restriction, including without limitation the rights 8*3cb1fd8eSs.makeev_local // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9*3cb1fd8eSs.makeev_local // copies of the Software, and to permit persons to whom the Software is 10*3cb1fd8eSs.makeev_local // furnished to do so, subject to the following conditions: 11*3cb1fd8eSs.makeev_local // 12*3cb1fd8eSs.makeev_local // The above copyright notice and this permission notice shall be included in 13*3cb1fd8eSs.makeev_local // all copies or substantial portions of the Software. 14*3cb1fd8eSs.makeev_local // 15*3cb1fd8eSs.makeev_local // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16*3cb1fd8eSs.makeev_local // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17*3cb1fd8eSs.makeev_local // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18*3cb1fd8eSs.makeev_local // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19*3cb1fd8eSs.makeev_local // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20*3cb1fd8eSs.makeev_local // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21*3cb1fd8eSs.makeev_local // THE SOFTWARE. 22*3cb1fd8eSs.makeev_local 2347d53e4dSSergey Makeev #pragma once 2447d53e4dSSergey Makeev 25d7cf17b1Ss.makeev_local #define MT_CPUCORE_ANY (0xffffffff) 26d7cf17b1Ss.makeev_local 27d7cf17b1Ss.makeev_local #include <Platform/Common/MTAtomic.h> 28d7cf17b1Ss.makeev_local 2947d53e4dSSergey Makeev namespace MT 3047d53e4dSSergey Makeev { 31d7cf17b1Ss.makeev_local namespace ThreadPriority 32d7cf17b1Ss.makeev_local { 33d7cf17b1Ss.makeev_local enum Type 34d7cf17b1Ss.makeev_local { 35d7cf17b1Ss.makeev_local HIGH = 0, 36d7cf17b1Ss.makeev_local DEFAULT = 1, 37d7cf17b1Ss.makeev_local LOW = 2 38d7cf17b1Ss.makeev_local }; 39d7cf17b1Ss.makeev_local } 40d7cf17b1Ss.makeev_local 41d7cf17b1Ss.makeev_local 4247d53e4dSSergey Makeev class ThreadBase 4347d53e4dSSergey Makeev { 4447d53e4dSSergey Makeev protected: 4547d53e4dSSergey Makeev void * funcData; 4647d53e4dSSergey Makeev TThreadEntryPoint func; 4747d53e4dSSergey Makeev public: 4847d53e4dSSergey Makeev 492e846c40SSergey Makeev MT_NOCOPYABLE(ThreadBase); 502e846c40SSergey Makeev ThreadBase()5147d53e4dSSergey Makeev ThreadBase() 5247d53e4dSSergey Makeev : funcData(nullptr) 5347d53e4dSSergey Makeev , func(nullptr) 5447d53e4dSSergey Makeev { 5547d53e4dSSergey Makeev } 5647d53e4dSSergey Makeev 5747d53e4dSSergey Makeev }; 5847d53e4dSSergey Makeev } 5947d53e4dSSergey Makeev 6047d53e4dSSergey Makeev 61