/
BirdLeon
/
ROBLOX2016
Обзор
Документация
Войти
/
BirdLeon
/
ROBLOX2016
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
Library/boost/libs/thread/test/test_8596.cpp
59 строк
1 KB
PatoFlamejanteTV
full source code
19 дек 2024, 19:11
19 дек 2024, 19:11
05db15d
Код
Авторство
О чём код?
// Copyright (C) 2013 Vicente Botet // // 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) #define BOOST_THREAD_VERSION 4 #include <iostream> #include <functional> //#include <future> #include <boost/thread.hpp> #include <boost/shared_ptr.hpp> int f() { return 42; } boost::packaged_task<int()>* schedule(boost::function<int ()> const& fn) { // Normally, the pointer to the packaged task is stored in a queue // for execution on a separate thread, and the schedule function // would return just a future<T> boost::function<int ()> copy(fn); boost::packaged_task<int()>* result = new boost::packaged_task<int()>(copy); return result; } struct MyFunc { MyFunc(MyFunc const&) = delete; MyFunc& operator=(MyFunc const&) = delete; MyFunc() {}; MyFunc(MyFunc &&) {}; MyFunc& operator=(MyFunc &&) { return *this;}; void operator()()const {} }; int main() { boost::packaged_task<int()>* p(schedule(f)); (*p)(); boost::future<int> fut = p->get_future(); std::cout << "The answer to the ultimate question: " << fut.get() << std::endl; { boost::function<void()> f; MyFunc mf; boost::packaged_task<void()> t1(f); boost::packaged_task<void()> t2(boost::move(mf)); } return 0; }