| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | // Distributed under the Boost Software License, Version 1.0. (See// accompanying file LICENSE_1_0.txt or copy at// http://www.boost.org/LICENSE_1_0.txt)// (C) Copyright 2009-2012 Anthony Williams// (C) Copyright 2012 Vicente J. Botet Escriba// Based on the Anthony's idea of scoped_thread in CCiA#ifndef BOOST_THREAD_THREAD_FUNCTORS_HPP#define BOOST_THREAD_THREAD_FUNCTORS_HPP#include <boost/thread/detail/config.hpp>#include <boost/thread/detail/delete.hpp>#include <boost/thread/detail/move.hpp>#include <boost/thread/thread_only.hpp>#include <boost/config/abi_prefix.hpp>namespace boost{  struct detach  {    template <class Thread>    void operator()(Thread& t)    {      t.detach();    }  };  struct detach_if_joinable  {    template <class Thread>    void operator()(Thread& t)    {      if (t.joinable())      {        t.detach();      }    }  };  struct join_if_joinable  {    template <class Thread>    void operator()(Thread& t)    {      if (t.joinable())      {        t.join();      }    }  };#if defined BOOST_THREAD_PROVIDES_INTERRUPTIONS  struct interrupt_and_join_if_joinable  {    template <class Thread>    void operator()(Thread& t)    {      if (t.joinable())      {        t.interrupt();        t.join();      }    }  };#endif}#include <boost/config/abi_suffix.hpp>#endif
 |