    // Copyright (C) 2016  Davis E. King (davis@dlib.net)
    // License: Boost Software License   See LICENSE.txt for the full license.
    #ifndef DLIB_AsYNC_CPP_
    #define DLIB_AsYNC_CPP_

    // C++11 things don't work in old versions of visual studio
    #if !defined( _MSC_VER) ||  _MSC_VER >= 1900

    #include "async.h"
    #include <stdlib.h>
    #include "../string.h"
    #include <thread>

    namespace dlib
    {

    // ----------------------------------------------------------------------------------------

        namespace impl
        {
            unsigned long default_num_threads()
            {
                try
                {
                    char* nt = getenv("DLIB_NUM_THREADS");
                    if (nt)
                        return string_cast<unsigned long>(nt);
                } catch(string_cast_error&) {}
                return std::thread::hardware_concurrency();
            }
        }

    // ----------------------------------------------------------------------------------------

        thread_pool& default_thread_pool()
        {
            static thread_pool tp(impl::default_num_threads());
            return tp;
        }
    }

    // ----------------------------------------------------------------------------------------

    #endif

    #endif // DLIB_AsYNC_CPP_