root/core/thread_api_traits_impl.hpp

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. is_running

   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 } }

/* [<][>][^][v][top][bottom][index][help] */