Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r83895 - trunk/libs/thread/test
From: vicente.botet_at_[hidden]
Date: 2013-04-14 08:40:46


Author: viboes
Date: 2013-04-14 08:40:44 EDT (Sun, 14 Apr 2013)
New Revision: 83895
URL: http://svn.boost.org/trac/boost/changeset/83895

Log:
Thread: Added test from [Boost-users] [boost][thread] Future returning 0xfeeefeee.
Added:
   trunk/libs/thread/test/test_ml2.cpp (contents, props changed)

Added: trunk/libs/thread/test/test_ml2.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/thread/test/test_ml2.cpp 2013-04-14 08:40:44 EDT (Sun, 14 Apr 2013)
@@ -0,0 +1,60 @@
+// Copyright (C) 2010 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 <cassert>
+#include <vector>
+#include <future>
+#include <functional>
+#include <boost/thread/future.hpp>
+
+
+int TRUC = 42;
+int main()
+{
+ std::vector< std::function<void()> > work_queue;
+
+ auto do_some_work = [&]()-> boost::future<int*>
+ {
+ auto promise = std::make_shared<boost::promise<int*>>();
+#if 0
+ work_queue.push_back( [=]
+ {
+ promise->set_value( &TRUC );
+ });
+#else
+ auto inner = [=]()
+ {
+ promise->set_value( &TRUC );
+ };
+ work_queue.push_back(inner);
+
+#endif
+
+ return promise->get_future();
+
+ };
+
+ auto ft_value = do_some_work();
+
+ while( !work_queue.empty() )
+ {
+#if 0
+ auto work = work_queue.back();
+#else
+ std::function<void()> work;
+ work = work_queue.back();
+#endif
+ work_queue.pop_back();
+ work();
+ }
+
+ auto value = ft_value.get();
+ assert( value == &TRUC );
+ return 0;
+}
+
+


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk