1 /****************************************************************************** 2 ** $Header: svn+ssh://jmmcg@svn.code.sf.net/p/libjmmcg/code/trunk/libjmmcg/core/thread_api_traits_impl.hpp 2055 2017-05-13 19:35:47Z jmmcg $ 3 ** 4 ** Copyright © 2004 by J.M.McGuiness, coder@hussar.me.uk 5 ** 6 ** This library is free software; you can redistribute it and/or 7 ** modify it under the terms of the GNU Lesser General Public 8 ** License as published by the Free Software Foundation; either 9 ** version 2.1 of the License, or (at your option) any later version. 10 ** 11 ** This library is distributed in the hope that it will be useful, 12 ** but WITHOUT ANY WARRANTY; without even the implied warranty of 13 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 ** Lesser General Public License for more details. 15 ** 16 ** You should have received a copy of the GNU Lesser General Public 17 ** License along with this library; if not, write to the Free Software 18 ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 19 */ 20 21 namespace jmmcg { namespace ppd { 22 23 // Implementation details..... Don't look below here!!! ;) 24 25 // "api_threading_traits" implementation... 26 27 template<generic_traits::api_type API_, typename Mdl_> inline bool __fastcall 28 api_threading_traits<API_, Mdl_>::is_running(api_params_type &parms) noexcept(true) { 29 if (parms.id && parms.id!=get_current_thread_id()) { 30 const typename api_params_type::suspend_count prev_count=suspend(parms); 31 resume(parms); 32 return !prev_count; 33 } else { 34 return static_cast<bool>(parms.id); 35 } 36 } 37 38 } }