$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: anthony_at_[hidden]
Date: 2008-06-04 11:50:34
Author: anthonyw
Date: 2008-06-04 11:50:34 EDT (Wed, 04 Jun 2008)
New Revision: 46121
URL: http://svn.boost.org/trac/boost/changeset/46121
Log:
Added free function swap() for threads
Text files modified: 
   trunk/boost/thread/detail/thread.hpp   |     5 +++++                                   
   trunk/libs/thread/test/test_thread.cpp |    18 ++++++++++++++++++                      
   2 files changed, 23 insertions(+), 0 deletions(-)
Modified: trunk/boost/thread/detail/thread.hpp
==============================================================================
--- trunk/boost/thread/detail/thread.hpp	(original)
+++ trunk/boost/thread/detail/thread.hpp	2008-06-04 11:50:34 EDT (Wed, 04 Jun 2008)
@@ -311,6 +311,11 @@
         bool interruption_requested() const;
     };
 
+    inline void swap(thread& lhs,thread& rhs)
+    {
+        return lhs.swap(rhs);
+    }
+    
 #ifdef BOOST_HAS_RVALUE_REFS
     inline thread&& move(thread&& t)
     {
Modified: trunk/libs/thread/test/test_thread.cpp
==============================================================================
--- trunk/libs/thread/test/test_thread.cpp	(original)
+++ trunk/libs/thread/test/test_thread.cpp	2008-06-04 11:50:34 EDT (Wed, 04 Jun 2008)
@@ -1,5 +1,6 @@
 // Copyright (C) 2001-2003
 // William E. Kempf
+// Copyright (C) 2008 Anthony Williams
 //
 //  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)
@@ -198,6 +199,22 @@
     timed_test(&do_test_timed_join, 10);
 }
 
+void test_swap()
+{
+    boost::thread t(simple_thread);
+    boost::thread t2(simple_thread);
+    boost::thread::id id1=t.get_id();
+    boost::thread::id id2=t2.get_id();
+
+    t.swap(t2);
+    BOOST_CHECK(t.get_id()==id2);
+    BOOST_CHECK(t2.get_id()==id1);
+    
+    swap(t,t2);
+    BOOST_CHECK(t.get_id()==id1);
+    BOOST_CHECK(t2.get_id()==id2);
+}
+
 
 boost::unit_test_framework::test_suite* init_unit_test_suite(int, char*[])
 {
@@ -211,6 +228,7 @@
     test->add(BOOST_TEST_CASE(test_thread_no_interrupt_if_interrupts_disabled_at_interruption_point));
     test->add(BOOST_TEST_CASE(test_creation_through_reference_wrapper));
     test->add(BOOST_TEST_CASE(test_timed_join));
+    test->add(BOOST_TEST_CASE(test_swap));
 
     return test;
 }