/
BirdLeon
/
ROBLOX2016
Обзор
Документация
Войти
/
BirdLeon
/
ROBLOX2016
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
Library/boost/libs/thread/example/scoped_thread.cpp
82 строки
1 KB
PatoFlamejanteTV
full source code
19 дек 2024, 19:11
19 дек 2024, 19:11
05db15d
Код
Авторство
О чём код?
// (C) Copyright 2009-2012 Anthony Williams // (C) Copyright 2012 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 3 #include <iostream> #include <boost/thread/scoped_thread.hpp> void do_something(int& i) { ++i; } void f(int, int) { } struct func { int& i; func(int& i_) : i(i_) { } void operator()() { for (unsigned j = 0; j < 1000000; ++j) { do_something(i); } } }; void do_something_in_current_thread() { } int main() { { int some_local_state=0; boost::strict_scoped_thread<> t( (boost::thread(func(some_local_state)))); do_something_in_current_thread(); } { int some_local_state=0; boost::thread t(( func(some_local_state) )); boost::strict_scoped_thread<> g( (boost::move(t)) ); do_something_in_current_thread(); } { int some_local_state=0; boost::scoped_thread<> t( (boost::thread(func(some_local_state)))); if (t.joinable()) t.join(); else do_something_in_current_thread(); } #if 0 { int some_local_state=0; boost::thread t(( func(some_local_state) )); boost::scoped_thread<> g( (boost::move(t)) ); if (g.joinable()) g.detach(); do_something_in_current_thread(); } #endif { boost::scoped_thread<> g( &f, 1, 2 ); do_something_in_current_thread(); } return 0; }