Ticket #7594: 7594.patch

File 7594.patch, 68.8 KB (added by viboes, 10 years ago)

Added fixes and tests

  • boost/thread/pthread/condition_variable.hpp

     
    6262            thread_cv_detail::lock_on_exit<unique_lock<mutex> > guard;
    6363#if defined BOOST_THREAD_PROVIDES_INTERRUPTIONS
    6464            detail::interruption_checker check_for_interruption(&internal_mutex,&cond);
     65#else
     66            boost::pthread::pthread_mutex_scoped_lock check_for_interruption(&internal_mutex);
    6567#endif
    6668            guard.activate(m);
    6769            do {
     
    9193        {
    9294#if defined BOOST_THREAD_PROVIDES_INTERRUPTIONS
    9395            detail::interruption_checker check_for_interruption(&internal_mutex,&cond);
     96#else
     97            boost::pthread::pthread_mutex_scoped_lock check_for_interruption(&internal_mutex);
    9498#endif
    9599            guard.activate(m);
    96100            cond_res=pthread_cond_timedwait(&cond,&internal_mutex,&timeout);
     
    156160                thread_cv_detail::lock_on_exit<lock_type> guard;
    157161#if defined BOOST_THREAD_PROVIDES_INTERRUPTIONS
    158162                detail::interruption_checker check_for_interruption(&internal_mutex,&cond);
     163#else
     164            boost::pthread::pthread_mutex_scoped_lock check_for_interruption(&internal_mutex);
    159165#endif
    160166                guard.activate(m);
    161167                res=pthread_cond_wait(&cond,&internal_mutex);
     
    328334              thread_cv_detail::lock_on_exit<lock_type> guard;
    329335#if defined BOOST_THREAD_PROVIDES_INTERRUPTIONS
    330336              detail::interruption_checker check_for_interruption(&internal_mutex,&cond);
     337#else
     338            boost::pthread::pthread_mutex_scoped_lock check_for_interruption(&internal_mutex);
    331339#endif
    332340              guard.activate(m);
    333341              res=pthread_cond_timedwait(&cond,&internal_mutex,&timeout);
  • boost/thread/pthread/condition_variable_fwd.hpp

     
    1414#include <boost/thread/lock_types.hpp>
    1515#include <boost/thread/thread_time.hpp>
    1616#include <boost/thread/pthread/timespec.hpp>
     17#if defined BOOST_THREAD_USES_DATETIME
    1718#include <boost/thread/xtime.hpp>
     19#endif
    1820#ifdef BOOST_THREAD_USES_CHRONO
    1921#include <boost/chrono/system_clocks.hpp>
    2022#include <boost/chrono/ceil.hpp>
    2123#endif
    2224#include <boost/thread/detail/delete.hpp>
    2325#include <boost/date_time/posix_time/posix_time_duration.hpp>
     26
    2427#include <boost/config/abi_prefix.hpp>
    2528
    2629namespace boost
     
    6467        }
    6568        ~condition_variable()
    6669        {
    67             BOOST_VERIFY(!pthread_mutex_destroy(&internal_mutex));
    6870            int ret;
    6971            do {
     72              ret = pthread_mutex_destroy(&internal_mutex);
     73            } while (ret == EINTR);
     74            BOOST_ASSERT(!ret);
     75            do {
    7076              ret = pthread_cond_destroy(&cond);
    7177            } while (ret == EINTR);
    72             BOOST_VERIFY(!ret);
     78            BOOST_ASSERT(!ret);
    7379        }
    7480
    7581        void wait(unique_lock<mutex>& m);
     
    241247    };
    242248
    243249    BOOST_THREAD_DECL void notify_all_at_thread_exit(condition_variable& cond, unique_lock<mutex> lk);
     250
    244251}
    245252
    246253
  • boost/thread/pthread/thread_data.hpp

     
    113113            bool joined;
    114114            boost::detail::thread_exit_callback_node* thread_exit_callbacks;
    115115            std::map<void const*,boost::detail::tss_data_node> tss_data;
    116 #if defined BOOST_THREAD_PROVIDES_INTERRUPTIONS
    117             bool interrupt_enabled;
    118             bool interrupt_requested;
    119 #endif
     116
    120117            pthread_mutex_t* cond_mutex;
    121118            pthread_cond_t* current_cond;
    122119            typedef std::vector<std::pair<condition_variable*, mutex*>
     
    127124            typedef std::vector<shared_ptr<future_object_base> > async_states_t;
    128125            async_states_t async_states_;
    129126
     127#if defined BOOST_THREAD_PROVIDES_INTERRUPTIONS
     128            // These data must be at the end so that the access to the other fields doesn't change
     129            // when BOOST_THREAD_PROVIDES_INTERRUPTIONS is defined
     130            bool interrupt_enabled;
     131            bool interrupt_requested;
     132#endif
    130133            thread_data_base():
    131134                done(false),join_started(false),joined(false),
    132135                thread_exit_callbacks(0),
    133 #if defined BOOST_THREAD_PROVIDES_INTERRUPTIONS
    134                 interrupt_enabled(true),
    135                 interrupt_requested(false),
    136 #endif
    137136                current_cond(0),
    138137                notify(),
    139138                async_states_()
     139#if defined BOOST_THREAD_PROVIDES_INTERRUPTIONS
     140                , interrupt_enabled(true)
     141                , interrupt_requested(false)
     142#endif
    140143            {}
    141144            virtual ~thread_data_base();
    142145
     
    209212                }
    210213            }
    211214        };
     215#endif
    212216    }
    213 #endif
    214217
    215218    namespace this_thread
    216219    {
  • boost/thread/thread_functors.hpp

     
    3838    }
    3939  };
    4040
     41#if defined BOOST_THREAD_PROVIDES_INTERRUPTIONS
    4142  struct interrupt_and_join_if_joinable
    4243  {
    4344    void operator()(thread& t)
     
    4950      }
    5051    }
    5152  };
    52 
     53#endif
    5354}
    5455#include <boost/config/abi_suffix.hpp>
    5556
  • boost/thread/win32/thread_data.hpp

     
    9494        {
    9595            long count;
    9696            detail::win32::handle_manager thread_handle;
    97 #if defined BOOST_THREAD_PROVIDES_INTERRUPTIONS
    98             detail::win32::handle_manager interruption_handle;
    99 #endif
    10097            boost::detail::thread_exit_callback_node* thread_exit_callbacks;
    10198            std::map<void const*,boost::detail::tss_data_node> tss_data;
    102 #if defined BOOST_THREAD_PROVIDES_INTERRUPTIONS
    103             bool interruption_enabled;
    104 #endif
    10599            unsigned id;
    106100            typedef std::vector<std::pair<condition_variable*, mutex*>
    107101            //, hidden_allocator<std::pair<condition_variable*, mutex*> >
     
    110104
    111105            typedef std::vector<shared_ptr<future_object_base> > async_states_t;
    112106            async_states_t async_states_;
     107#if defined BOOST_THREAD_PROVIDES_INTERRUPTIONS
     108            // These data must be at the end so that the access to the other fields doesn't change
     109            // when BOOST_THREAD_PROVIDES_INTERRUPTIONS is defined
     110            detail::win32::handle_manager interruption_handle;
     111            bool interruption_enabled;
     112#endif
    113113
    114114            thread_data_base():
    115115                count(0),thread_handle(detail::win32::invalid_handle_value),
    116 #if defined BOOST_THREAD_PROVIDES_INTERRUPTIONS
    117                 interruption_handle(create_anonymous_event(detail::win32::manual_reset_event,detail::win32::event_initially_reset)),
    118 #endif
    119116                thread_exit_callbacks(0),tss_data(),
    120 #if defined BOOST_THREAD_PROVIDES_INTERRUPTIONS
    121                 interruption_enabled(true),
    122 #endif
    123117                id(0),
    124118                notify(),
    125119                async_states_()
     120#if defined BOOST_THREAD_PROVIDES_INTERRUPTIONS
     121                , interruption_handle(create_anonymous_event(detail::win32::manual_reset_event,detail::win32::event_initially_reset))
     122                , interruption_enabled(true)
     123#endif
    126124            {}
    127125            virtual ~thread_data_base();
    128126
  • libs/thread/build/Jamfile.v2

     
    4949      <toolset>gcc:<cxxflags>-Wno-long-long
    5050      <define>BOOST_THREAD_THROW_IF_PRECONDITION_NOT_SATISFIED
    5151      <define>BOOST_SYSTEM_NO_DEPRECATED
     52      #<define>BOOST_THREAD_DONT_PROVIDE_INTERRUPTIONS
     53     
    5254      <library>/boost/system//boost_system
    5355       #-pedantic -ansi -std=gnu++0x -Wextra -fpermissive
    5456        <warnings>all
  • libs/thread/test/sync/conditions/condition_variable/wait_pass.cpp

     
     1//===----------------------------------------------------------------------===//
     2//
     3//                     The LLVM Compiler Infrastructure
     4//
     5// This file is dual licensed under the MIT and the University of Illinois Open
     6// Source Licenses. See LICENSE.TXT for details.
     7//
     8//===----------------------------------------------------------------------===//
     9// Copyright (C) 2011 Vicente J. Botet Escriba
     10//
     11//  Distributed under the Boost Software License, Version 1.0. (See accompanying
     12//  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
     13
     14// <boost/thread/condition_variable>
     15
     16// class condition_variable;
     17
     18// void wait(unique_lock<mutex>& lock);
     19
     20#include <iostream>
     21#include <boost/thread/condition_variable.hpp>
     22#include <boost/thread/mutex.hpp>
     23#include <boost/thread/thread.hpp>
     24#include <boost/detail/lightweight_test.hpp>
     25
     26#if defined BOOST_THREAD_USES_CHRONO
     27
     28boost::condition_variable cv;
     29boost::mutex mut;
     30
     31int test1 = 0;
     32int test2 = 0;
     33
     34int runs = 0;
     35
     36void f()
     37{
     38  boost::unique_lock<boost::mutex> lk(mut);
     39  BOOST_TEST(test2 == 0);
     40  test1 = 1;
     41  cv.notify_one();
     42  while (test2 == 0) {
     43      cv.wait(lk);
     44  }
     45  BOOST_TEST(test2 != 0);
     46}
     47
     48int main()
     49{
     50  boost::unique_lock<boost::mutex>lk(mut);
     51  boost::thread t(f);
     52  BOOST_TEST(test1 == 0);
     53  while (test1 == 0)
     54  {
     55      cv.wait(lk);
     56  }
     57  BOOST_TEST(test1 != 0);
     58  test2 = 1;
     59  lk.unlock();
     60  cv.notify_one();
     61  t.join();
     62
     63  return boost::report_errors();
     64}
     65#else
     66#error "Test not applicable: BOOST_THREAD_USES_CHRONO not defined for this platform as not supported"
     67#endif
     68
  • libs/thread/test/Jamfile.v2

    Property changes on: libs/thread/test/sync/conditions/condition_variable/wait_pass.cpp
    ___________________________________________________________________
    Added: svn:mime-type
       + text/plain
    Added: svn:keywords
       + Id
    Added: svn:eol-style
       + native
    
     
    118118    ;
    119119}
    120120
     121rule thread-run2-noit ( sources : name )
     122{
     123    return
     124    #[ run $(sources) ../build//boost_thread : : :
     125    #  : $(name) ]
     126    #[ run $(sources) ../src/tss_null.cpp ../build//boost_thread/<link>static
     127    #    : : :
     128    #  : $(name)_lib ]
     129    [ run $(sources) ../build//boost_thread : : :
     130      <define>BOOST_THREAD_DONT_PROVIDE_INTERRUPTIONS
     131      : $(name)_noit ]
     132    ;
     133}
     134
    121135rule thread-run2-h ( sources : name )
    122136{
    123137    return
     
    237251    :
    238252          [ thread-compile-fail ./sync/conditions/condition_variable/assign_fail.cpp : : condition_variable__assign_f ]
    239253          [ thread-compile-fail ./sync/conditions/condition_variable/copy_fail.cpp : : condition_variable__copy_f ]
    240           [ thread-run2 ./sync/conditions/condition_variable/default_pass.cpp : condition_variable__default_p ]
    241           [ thread-run2 ./sync/conditions/condition_variable/dtor_pass.cpp : condition_variable__dtor_p ]
    242           [ thread-run2 ./sync/conditions/condition_variable/native_handle_pass.cpp : condition_variable__native_handle_p ]
    243           [ thread-run2 ./sync/conditions/condition_variable/wait_for_pass.cpp : condition_variable__wait_for_p ]
    244           [ thread-run2 ./sync/conditions/condition_variable/wait_for_pred_pass.cpp : condition_variable__wait_for_pred_p ]
    245           [ thread-run2 ./sync/conditions/condition_variable/wait_until_pass.cpp : condition_variable__wait_until_p ]
    246           [ thread-run2 ./sync/conditions/condition_variable/wait_until_pred_pass.cpp : condition_variable__wait_until_pred_p ]
     254          [ thread-run2-noit ./sync/conditions/condition_variable/default_pass.cpp : condition_variable__default_p ]
     255          [ thread-run2-noit ./sync/conditions/condition_variable/dtor_pass.cpp : condition_variable__dtor_p ]
     256          [ thread-run2-noit ./sync/conditions/condition_variable/native_handle_pass.cpp : condition_variable__native_handle_p ]
     257          [ thread-run2-noit ./sync/conditions/condition_variable/wait_pass.cpp : condition_variable__wait_p ]
     258          [ thread-run2-noit ./sync/conditions/condition_variable/wait_for_pass.cpp : condition_variable__wait_for_p ]
     259          [ thread-run2-noit ./sync/conditions/condition_variable/wait_for_pred_pass.cpp : condition_variable__wait_for_pred_p ]
     260          [ thread-run2-noit ./sync/conditions/condition_variable/wait_until_pass.cpp : condition_variable__wait_until_p ]
     261          [ thread-run2-noit ./sync/conditions/condition_variable/wait_until_pred_pass.cpp : condition_variable__wait_until_pred_p ]
    247262
    248263          [ thread-compile-fail ./sync/conditions/condition_variable_any/assign_fail.cpp : : condition_variable_any__assign_f ]
    249264          [ thread-compile-fail ./sync/conditions/condition_variable_any/copy_fail.cpp : : condition_variable_any__copy_f ]
    250           [ thread-run2 ./sync/conditions/condition_variable_any/default_pass.cpp : condition_variable_any__default_p ]
    251           [ thread-run2 ./sync/conditions/condition_variable_any/dtor_pass.cpp : condition_variable_any__dtor_p ]
    252           [ thread-run2 ./sync/conditions/condition_variable_any/wait_for_pass.cpp : condition_variable_any__wait_for_p ]
    253           [ thread-run2 ./sync/conditions/condition_variable_any/wait_for_pred_pass.cpp : condition_variable_any__wait_for_pred_p ]
    254           [ thread-run2 ./sync/conditions/condition_variable_any/wait_until_pass.cpp : condition_variable_any__wait_until_p ]
    255           [ thread-run2 ./sync/conditions/condition_variable_any/wait_until_pred_pass.cpp : condition_variable_any__wait_until_pred_p ]
    256           [ thread-run2 ./sync/conditions/cv_status/cv_status_pass.cpp : cv_status__cv_status_p ]
    257           [ thread-run2 ./sync/conditions/notify_all_at_thread_exit_pass.cpp : notify_all_at_thread_exit_p ]
     265          [ thread-run2-noit ./sync/conditions/condition_variable_any/default_pass.cpp : condition_variable_any__default_p ]
     266          [ thread-run2-noit ./sync/conditions/condition_variable_any/dtor_pass.cpp : condition_variable_any__dtor_p ]
     267          [ thread-run2-noit ./sync/conditions/condition_variable_any/wait_for_pass.cpp : condition_variable_any__wait_for_p ]
     268          [ thread-run2-noit ./sync/conditions/condition_variable_any/wait_for_pred_pass.cpp : condition_variable_any__wait_for_pred_p ]
     269          [ thread-run2-noit ./sync/conditions/condition_variable_any/wait_until_pass.cpp : condition_variable_any__wait_until_p ]
     270          [ thread-run2-noit ./sync/conditions/condition_variable_any/wait_until_pred_pass.cpp : condition_variable_any__wait_until_pred_p ]
     271          [ thread-run2-noit ./sync/conditions/cv_status/cv_status_pass.cpp : cv_status__cv_status_p ]
     272          [ thread-run2-noit ./sync/conditions/notify_all_at_thread_exit_pass.cpp : notify_all_at_thread_exit_p ]
    258273    ;
    259274
    260275    #explicit ts_async ;
    261276    test-suite ts_async
    262277    :
    263           [ thread-run2 ./sync/futures/async/async_pass.cpp : async__async_p ]
     278          [ thread-run2-noit ./sync/futures/async/async_pass.cpp : async__async_p ]
    264279    ;
    265280
    266281    #explicit ts_promise ;
     
    268283    :
    269284          [ thread-compile-fail ./sync/futures/promise/copy_assign_fail.cpp : : promise__copy_assign_f ]
    270285          [ thread-compile-fail ./sync/futures/promise/copy_ctor_fail.cpp : : promise__copy_ctor_f ]
    271           [ thread-run2 ./sync/futures/promise/alloc_ctor_pass.cpp : promise__alloc_ctor_p ]
    272           [ thread-run2 ./sync/futures/promise/default_pass.cpp : promise__default_p ]
    273           [ thread-run2 ./sync/futures/promise/dtor_pass.cpp : promise__dtor_p ]
    274           [ thread-run2 ./sync/futures/promise/get_future_pass.cpp : promise__get_future_p ]
    275           [ thread-run2 ./sync/futures/promise/move_ctor_pass.cpp : promise__move_ctor_p ]
    276           [ thread-run2 ./sync/futures/promise/move_assign_pass.cpp : promise__move_asign_p ]
    277           [ thread-run2 ./sync/futures/promise/set_exception_pass.cpp : promise__set_exception_p ]
    278           [ thread-run2 ./sync/futures/promise/set_lvalue_pass.cpp : promise__set_lvalue_p ]
    279           [ thread-run2 ./sync/futures/promise/set_rvalue_pass.cpp : promise__set_rvalue_p ]
    280           [ thread-run2 ./sync/futures/promise/set_value_const_pass.cpp : promise__set_value_const_p ]
    281           [ thread-run2 ./sync/futures/promise/set_value_void_pass.cpp : promise__set_value_void_p ]
    282           [ thread-run2 ./sync/futures/promise/use_allocator_pass.cpp : promise__use_allocator_p ]
    283           [ thread-run2 ./sync/futures/promise/set_exception_at_thread_exit_pass.cpp : promise__set_exception_at_thread_exit_p ]
    284           [ thread-run2 ./sync/futures/promise/set_lvalue_at_thread_exit_pass.cpp : promise__set_lvalue_at_thread_exit_p ]
    285           [ thread-run2 ./sync/futures/promise/set_rvalue_at_thread_exit_pass.cpp : promise__set_rvalue_at_thread_exit_p ]
    286           [ thread-run2 ./sync/futures/promise/set_value_at_thread_exit_const_pass.cpp : promise__set_value_at_thread_exit_const_p ]
    287           [ thread-run2 ./sync/futures/promise/set_value_at_thread_exit_void_pass.cpp : promise__set_value_at_thread_exit_void_p ]
     286          [ thread-run2-noit ./sync/futures/promise/alloc_ctor_pass.cpp : promise__alloc_ctor_p ]
     287          [ thread-run2-noit ./sync/futures/promise/default_pass.cpp : promise__default_p ]
     288          [ thread-run2-noit ./sync/futures/promise/dtor_pass.cpp : promise__dtor_p ]
     289          [ thread-run2-noit ./sync/futures/promise/get_future_pass.cpp : promise__get_future_p ]
     290          [ thread-run2-noit ./sync/futures/promise/move_ctor_pass.cpp : promise__move_ctor_p ]
     291          [ thread-run2-noit ./sync/futures/promise/move_assign_pass.cpp : promise__move_asign_p ]
     292          [ thread-run2-noit ./sync/futures/promise/set_exception_pass.cpp : promise__set_exception_p ]
     293          [ thread-run2-noit ./sync/futures/promise/set_lvalue_pass.cpp : promise__set_lvalue_p ]
     294          [ thread-run2-noit ./sync/futures/promise/set_rvalue_pass.cpp : promise__set_rvalue_p ]
     295          [ thread-run2-noit ./sync/futures/promise/set_value_const_pass.cpp : promise__set_value_const_p ]
     296          [ thread-run2-noit ./sync/futures/promise/set_value_void_pass.cpp : promise__set_value_void_p ]
     297          [ thread-run2-noit ./sync/futures/promise/use_allocator_pass.cpp : promise__use_allocator_p ]
     298          [ thread-run2-noit ./sync/futures/promise/set_exception_at_thread_exit_pass.cpp : promise__set_exception_at_thread_exit_p ]
     299          [ thread-run2-noit ./sync/futures/promise/set_lvalue_at_thread_exit_pass.cpp : promise__set_lvalue_at_thread_exit_p ]
     300          [ thread-run2-noit ./sync/futures/promise/set_rvalue_at_thread_exit_pass.cpp : promise__set_rvalue_at_thread_exit_p ]
     301          [ thread-run2-noit ./sync/futures/promise/set_value_at_thread_exit_const_pass.cpp : promise__set_value_at_thread_exit_const_p ]
     302          [ thread-run2-noit ./sync/futures/promise/set_value_at_thread_exit_void_pass.cpp : promise__set_value_at_thread_exit_void_p ]
    288303    ;
    289304
    290305    #explicit ts_future ;
     
    292307    :
    293308          [ thread-compile-fail ./sync/futures/future/copy_assign_fail.cpp : : future__copy_assign_f ]
    294309          [ thread-compile-fail ./sync/futures/future/copy_ctor_fail.cpp : : future__copy_ctor_f ]
    295           [ thread-run2 ./sync/futures/future/default_pass.cpp : future__default_p ]
    296           [ thread-run2 ./sync/futures/future/dtor_pass.cpp : future__dtor_p ]
    297           [ thread-run2 ./sync/futures/future/get_pass.cpp : future__get_p ]
    298           [ thread-run2 ./sync/futures/future/move_ctor_pass.cpp : future__move_ctor_p ]
    299           [ thread-run2 ./sync/futures/future/move_assign_pass.cpp : future__move_asign_p ]
    300           [ thread-run2 ./sync/futures/future/share_pass.cpp : future__share_p ]
    301           [ thread-run2 ./sync/futures/future/then_pass.cpp : future__then_p ]
     310          [ thread-run2-noit ./sync/futures/future/default_pass.cpp : future__default_p ]
     311          [ thread-run2-noit ./sync/futures/future/dtor_pass.cpp : future__dtor_p ]
     312          [ thread-run2-noit ./sync/futures/future/get_pass.cpp : future__get_p ]
     313          [ thread-run2-noit ./sync/futures/future/move_ctor_pass.cpp : future__move_ctor_p ]
     314          [ thread-run2-noit ./sync/futures/future/move_assign_pass.cpp : future__move_asign_p ]
     315          [ thread-run2-noit ./sync/futures/future/share_pass.cpp : future__share_p ]
     316          [ thread-run2-noit ./sync/futures/future/then_pass.cpp : future__then_p ]
    302317    ;
    303318
    304319    #explicit ts_shared_future ;
    305320    test-suite ts_shared_future
    306321    :
    307           [ thread-run2 ./sync/futures/shared_future/copy_assign_pass.cpp : shared_future__copy_assign_p ]
    308           [ thread-run2 ./sync/futures/shared_future/copy_ctor_pass.cpp : shared_future__copy_ctor_p ]
    309           [ thread-run2 ./sync/futures/shared_future/default_pass.cpp : shared_future__default_p ]
    310           [ thread-run2 ./sync/futures/shared_future/dtor_pass.cpp : shared_future__dtor_p ]
    311           [ thread-run2 ./sync/futures/shared_future/get_pass.cpp : shared_future__get_p ]
    312           [ thread-run2 ./sync/futures/shared_future/move_ctor_pass.cpp : shared_future__move_ctor_p ]
    313           [ thread-run2 ./sync/futures/shared_future/move_assign_pass.cpp : shared_future__move_asign_p ]
     322          [ thread-run2-noit ./sync/futures/shared_future/copy_assign_pass.cpp : shared_future__copy_assign_p ]
     323          [ thread-run2-noit ./sync/futures/shared_future/copy_ctor_pass.cpp : shared_future__copy_ctor_p ]
     324          [ thread-run2-noit ./sync/futures/shared_future/default_pass.cpp : shared_future__default_p ]
     325          [ thread-run2-noit ./sync/futures/shared_future/dtor_pass.cpp : shared_future__dtor_p ]
     326          [ thread-run2-noit ./sync/futures/shared_future/get_pass.cpp : shared_future__get_p ]
     327          [ thread-run2-noit ./sync/futures/shared_future/move_ctor_pass.cpp : shared_future__move_ctor_p ]
     328          [ thread-run2-noit ./sync/futures/shared_future/move_assign_pass.cpp : shared_future__move_asign_p ]
    314329    ;
    315330
    316331    #explicit ts_packaged_task ;
    317332    test-suite ts_packaged_task
    318333    :
    319           [ thread-run2 ./sync/futures/packaged_task/alloc_ctor_pass.cpp : packaged_task__alloc_ctor_p ]
     334          [ thread-run2-noit ./sync/futures/packaged_task/alloc_ctor_pass.cpp : packaged_task__alloc_ctor_p ]
    320335          [ thread-compile-fail ./sync/futures/packaged_task/copy_assign_fail.cpp : : packaged_task__copy_assign_f ]
    321336          [ thread-compile-fail ./sync/futures/packaged_task/copy_ctor_fail.cpp : : packaged_task__copy_ctor_f ]
    322           [ thread-run2 ./sync/futures/packaged_task/default_ctor_pass.cpp : packaged_task__default_ctor_p ]
    323           [ thread-run2 ./sync/futures/packaged_task/func_ctor_pass.cpp : packaged_task__func_ctor_p ]
    324           [ thread-run2 ./sync/futures/packaged_task/dtor_pass.cpp : packaged_task__dtor_p ]
    325           [ thread-run2 ./sync/futures/packaged_task/get_future_pass.cpp : packaged_task__get_future_p ]
    326           [ thread-run2 ./sync/futures/packaged_task/move_ctor_pass.cpp : packaged_task__move_ctor_p ]
    327           [ thread-run2 ./sync/futures/packaged_task/move_assign_pass.cpp : packaged_task__move_asign_p ]
    328           [ thread-run2 ./sync/futures/packaged_task/operator_pass.cpp : packaged_task__operator_p ]
    329           [ thread-run2 ./sync/futures/packaged_task/reset_pass.cpp : packaged_task__reset_p ]
    330           [ thread-run2 ./sync/futures/packaged_task/use_allocator_pass.cpp : packaged_task__use_allocator_p ]
    331           [ thread-run2 ./sync/futures/packaged_task/types_pass.cpp : packaged_task__types_p ]
    332           [ thread-run2 ./sync/futures/packaged_task/member_swap_pass.cpp : packaged_task__member_swap_p ]
    333           [ thread-run2 ./sync/futures/packaged_task/non_member_swap_pass.cpp : packaged_task__non_member_swap_p ]
    334           [ thread-run2 ./sync/futures/packaged_task/make_ready_at_thread_exit_pass.cpp : packaged_task__make_ready_at_thread_exit_p ]
     337          [ thread-run2-noit ./sync/futures/packaged_task/default_ctor_pass.cpp : packaged_task__default_ctor_p ]
     338          [ thread-run2-noit ./sync/futures/packaged_task/func_ctor_pass.cpp : packaged_task__func_ctor_p ]
     339          [ thread-run2-noit ./sync/futures/packaged_task/dtor_pass.cpp : packaged_task__dtor_p ]
     340          [ thread-run2-noit ./sync/futures/packaged_task/get_future_pass.cpp : packaged_task__get_future_p ]
     341          [ thread-run2-noit ./sync/futures/packaged_task/move_ctor_pass.cpp : packaged_task__move_ctor_p ]
     342          [ thread-run2-noit ./sync/futures/packaged_task/move_assign_pass.cpp : packaged_task__move_asign_p ]
     343          [ thread-run2-noit ./sync/futures/packaged_task/operator_pass.cpp : packaged_task__operator_p ]
     344          [ thread-run2-noit ./sync/futures/packaged_task/reset_pass.cpp : packaged_task__reset_p ]
     345          [ thread-run2-noit ./sync/futures/packaged_task/use_allocator_pass.cpp : packaged_task__use_allocator_p ]
     346          [ thread-run2-noit ./sync/futures/packaged_task/types_pass.cpp : packaged_task__types_p ]
     347          [ thread-run2-noit ./sync/futures/packaged_task/member_swap_pass.cpp : packaged_task__member_swap_p ]
     348          [ thread-run2-noit ./sync/futures/packaged_task/non_member_swap_pass.cpp : packaged_task__non_member_swap_p ]
     349          [ thread-run2-noit ./sync/futures/packaged_task/make_ready_at_thread_exit_pass.cpp : packaged_task__make_ready_at_thread_exit_p ]
    335350    ;
    336351
    337352
     
    340355    :
    341356          [ thread-compile-fail ./sync/mutual_exclusion/locks/lock_guard/copy_assign_fail.cpp : : lock_guard__cons__copy_assign_f ]
    342357          [ thread-compile-fail ./sync/mutual_exclusion/locks/lock_guard/copy_ctor_fail.cpp : : lock_guard__cons__copy_ctor_f ]
    343           [ thread-run2 ./sync/mutual_exclusion/locks/lock_guard/adopt_lock_pass.cpp : lock_guard__cons__adopt_lock_p ]
    344           [ thread-run2 ./sync/mutual_exclusion/locks/lock_guard/default_pass.cpp : lock_guard__cons__default_p ]
    345           [ thread-run2 ./sync/mutual_exclusion/locks/lock_guard/types_pass.cpp : lock_guard__types_p ]
    346           [ thread-run2 ./sync/mutual_exclusion/locks/lock_guard/make_lock_guard_pass.cpp : make_lock_guard_p ]
    347           [ thread-run2 ./sync/mutual_exclusion/locks/lock_guard/make_lock_guard_adopt_lock_pass.cpp : make_lock_guard__adopt_lock_p ]
     358          [ thread-run2-noit ./sync/mutual_exclusion/locks/lock_guard/adopt_lock_pass.cpp : lock_guard__cons__adopt_lock_p ]
     359          [ thread-run2-noit ./sync/mutual_exclusion/locks/lock_guard/default_pass.cpp : lock_guard__cons__default_p ]
     360          [ thread-run2-noit ./sync/mutual_exclusion/locks/lock_guard/types_pass.cpp : lock_guard__types_p ]
     361          [ thread-run2-noit ./sync/mutual_exclusion/locks/lock_guard/make_lock_guard_pass.cpp : make_lock_guard_p ]
     362          [ thread-run2-noit ./sync/mutual_exclusion/locks/lock_guard/make_lock_guard_adopt_lock_pass.cpp : make_lock_guard__adopt_lock_p ]
    348363    ;
    349364
    350365    #explicit ts_unique_lock ;
     
    352367    :
    353368          [ thread-compile-fail ./sync/mutual_exclusion/locks/unique_lock/cons/copy_assign_fail.cpp : : unique_lock__cons__copy_assign_f ]
    354369          [ thread-compile-fail ./sync/mutual_exclusion/locks/unique_lock/cons/copy_ctor_fail.cpp : : unique_lock__cons__copy_ctor_f ]
    355           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/adopt_lock_pass.cpp : unique_lock__cons__adopt_lock_p ]
    356           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/default_pass.cpp : unique_lock__cons__default_p ]
    357           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/defer_lock_pass.cpp : unique_lock__cons__defer_lock_p ]
    358           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/duration_pass.cpp : unique_lock__cons__duration_p ]
    359           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/move_assign_pass.cpp : unique_lock__cons__move_assign_p ]
    360           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/move_ctor_pass.cpp : unique_lock__cons__move_ctor_p ]
    361           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/move_ctor_upgrade_lock_pass.cpp : unique_lock__cons__move_ctor_upgrade_lock_p ]
    362           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/move_ctor_upgrade_lock_try_pass.cpp : unique_lock__cons__move_ctor_upgrade_lock_try_p ]
    363           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/move_ctor_upgrade_lock_for_pass.cpp : unique_lock__cons__move_ctor_upgrade_lock_for_p ]
    364           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/move_ctor_upgrade_lock_until_pass.cpp : unique_lock__cons__move_ctor_upgrade_lock_until_p ]
    365           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/mutex_pass.cpp : unique_lock__cons__mutex_p ]
    366           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/time_point_pass.cpp : unique_lock__cons__time_point_p ]
    367           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/try_to_lock_pass.cpp : unique_lock__cons__try_to_lock_p ]
    368           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/locking/lock_pass.cpp : unique_lock__lock_p ]
    369           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/locking/try_lock_for_pass.cpp : unique_lock__try_lock_for_p ]
    370           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/locking/try_lock_pass.cpp : unique_lock__try_lock_p ]
    371           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/locking/try_lock_until_pass.cpp : unique_lock__try_lock_until_p ]
    372           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/locking/unlock_pass.cpp : unique_lock__unlock_p ]
    373           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/mod/member_swap_pass.cpp : unique_lock__member_swap_p ]
    374           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/mod/non_member_swap_pass.cpp : unique_lock__non_member_swap_p ]
    375           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/mod/release_pass.cpp : unique_lock__release_p ]
    376           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/obs/mutex_pass.cpp : unique_lock__mutex_p ]
    377           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/obs/op_bool_pass.cpp : unique_lock__op_bool_p ]
     370          [ thread-run2-noit ./sync/mutual_exclusion/locks/unique_lock/cons/adopt_lock_pass.cpp : unique_lock__cons__adopt_lock_p ]
     371          [ thread-run2-noit ./sync/mutual_exclusion/locks/unique_lock/cons/default_pass.cpp : unique_lock__cons__default_p ]
     372          [ thread-run2-noit ./sync/mutual_exclusion/locks/unique_lock/cons/defer_lock_pass.cpp : unique_lock__cons__defer_lock_p ]
     373          [ thread-run2-noit ./sync/mutual_exclusion/locks/unique_lock/cons/duration_pass.cpp : unique_lock__cons__duration_p ]
     374          [ thread-run2-noit ./sync/mutual_exclusion/locks/unique_lock/cons/move_assign_pass.cpp : unique_lock__cons__move_assign_p ]
     375          [ thread-run2-noit ./sync/mutual_exclusion/locks/unique_lock/cons/move_ctor_pass.cpp : unique_lock__cons__move_ctor_p ]
     376          [ thread-run2-noit ./sync/mutual_exclusion/locks/unique_lock/cons/move_ctor_upgrade_lock_pass.cpp : unique_lock__cons__move_ctor_upgrade_lock_p ]
     377          [ thread-run2-noit ./sync/mutual_exclusion/locks/unique_lock/cons/move_ctor_upgrade_lock_try_pass.cpp : unique_lock__cons__move_ctor_upgrade_lock_try_p ]
     378          [ thread-run2-noit ./sync/mutual_exclusion/locks/unique_lock/cons/move_ctor_upgrade_lock_for_pass.cpp : unique_lock__cons__move_ctor_upgrade_lock_for_p ]
     379          [ thread-run2-noit ./sync/mutual_exclusion/locks/unique_lock/cons/move_ctor_upgrade_lock_until_pass.cpp : unique_lock__cons__move_ctor_upgrade_lock_until_p ]
     380          [ thread-run2-noit ./sync/mutual_exclusion/locks/unique_lock/cons/mutex_pass.cpp : unique_lock__cons__mutex_p ]
     381          [ thread-run2-noit ./sync/mutual_exclusion/locks/unique_lock/cons/time_point_pass.cpp : unique_lock__cons__time_point_p ]
     382          [ thread-run2-noit ./sync/mutual_exclusion/locks/unique_lock/cons/try_to_lock_pass.cpp : unique_lock__cons__try_to_lock_p ]
     383          [ thread-run2-noit ./sync/mutual_exclusion/locks/unique_lock/locking/lock_pass.cpp : unique_lock__lock_p ]
     384          [ thread-run2-noit ./sync/mutual_exclusion/locks/unique_lock/locking/try_lock_for_pass.cpp : unique_lock__try_lock_for_p ]
     385          [ thread-run2-noit ./sync/mutual_exclusion/locks/unique_lock/locking/try_lock_pass.cpp : unique_lock__try_lock_p ]
     386          [ thread-run2-noit ./sync/mutual_exclusion/locks/unique_lock/locking/try_lock_until_pass.cpp : unique_lock__try_lock_until_p ]
     387          [ thread-run2-noit ./sync/mutual_exclusion/locks/unique_lock/locking/unlock_pass.cpp : unique_lock__unlock_p ]
     388          [ thread-run2-noit ./sync/mutual_exclusion/locks/unique_lock/mod/member_swap_pass.cpp : unique_lock__member_swap_p ]
     389          [ thread-run2-noit ./sync/mutual_exclusion/locks/unique_lock/mod/non_member_swap_pass.cpp : unique_lock__non_member_swap_p ]
     390          [ thread-run2-noit ./sync/mutual_exclusion/locks/unique_lock/mod/release_pass.cpp : unique_lock__release_p ]
     391          [ thread-run2-noit ./sync/mutual_exclusion/locks/unique_lock/obs/mutex_pass.cpp : unique_lock__mutex_p ]
     392          [ thread-run2-noit ./sync/mutual_exclusion/locks/unique_lock/obs/op_bool_pass.cpp : unique_lock__op_bool_p ]
    378393          #[ thread-compile-fail ./sync/mutual_exclusion/locks/unique_lock/obs/op_int_fail.cpp : : unique_lock__op_int_f ]
    379           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/obs/owns_lock_pass.cpp : unique_lock__owns_lock_p ]
    380           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/types_pass.cpp : unique_lock__types_p ]
     394          [ thread-run2-noit ./sync/mutual_exclusion/locks/unique_lock/obs/owns_lock_pass.cpp : unique_lock__owns_lock_p ]
     395          [ thread-run2-noit ./sync/mutual_exclusion/locks/unique_lock/types_pass.cpp : unique_lock__types_p ]
    381396
    382397
    383398    ;
     
    385400    #explicit ts_make_unique_lock ;
    386401    test-suite ts_make_unique_lock
    387402    :
    388           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/make_unique_lock_mutex_pass.cpp : make_unique_lock__mutex_p ]
    389           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/make_unique_lock_adopt_lock_pass.cpp : make_unique_lock__adopt_lock_p ]
    390           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/make_unique_lock_defer_lock_pass.cpp : make_unique_lock__defer_lock_p ]
    391           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/make_unique_lock_try_to_lock_pass.cpp : make_unique_lock__try_to_lock_p ]
     403          [ thread-run2-noit ./sync/mutual_exclusion/locks/unique_lock/cons/make_unique_lock_mutex_pass.cpp : make_unique_lock__mutex_p ]
     404          [ thread-run2-noit ./sync/mutual_exclusion/locks/unique_lock/cons/make_unique_lock_adopt_lock_pass.cpp : make_unique_lock__adopt_lock_p ]
     405          [ thread-run2-noit ./sync/mutual_exclusion/locks/unique_lock/cons/make_unique_lock_defer_lock_pass.cpp : make_unique_lock__defer_lock_p ]
     406          [ thread-run2-noit ./sync/mutual_exclusion/locks/unique_lock/cons/make_unique_lock_try_to_lock_pass.cpp : make_unique_lock__try_to_lock_p ]
    392407
    393           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/make_unique_locks_mutex_pass.cpp : make_unique_locks__mutex_p ]
     408          [ thread-run2-noit ./sync/mutual_exclusion/locks/unique_lock/cons/make_unique_locks_mutex_pass.cpp : make_unique_locks__mutex_p ]
    394409
    395410    ;
    396411
     
    399414    :
    400415          [ thread-compile-fail ./sync/mutual_exclusion/locks/shared_lock/cons/copy_assign_fail.cpp : : shared_lock__cons__copy_assign_f ]
    401416          [ thread-compile-fail ./sync/mutual_exclusion/locks/shared_lock/cons/copy_ctor_fail.cpp : : shared_lock__cons__copy_ctor_f ]
    402           [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/cons/adopt_lock_pass.cpp : shared_lock__cons__adopt_lock_p ]
    403           [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/cons/default_pass.cpp : shared_lock__cons__default_p ]
    404           [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/cons/defer_lock_pass.cpp : shared_lock__cons__defer_lock_p ]
    405           [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/cons/duration_pass.cpp : shared_lock__cons__duration_p ]
    406           [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/cons/move_assign_pass.cpp : shared_lock__cons__move_assign_p ]
    407           [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/cons/move_ctor_pass.cpp : shared_lock__cons__move_ctor_p ]
    408           [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/cons/move_ctor_unique_lock_pass.cpp : shared_lock__cons__move_ctor_unique_lock_p ]
    409           [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/cons/move_ctor_upgrade_lock_pass.cpp : shared_lock__cons__move_ctor_upgrade_lock_p ]
    410           [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/cons/mutex_pass.cpp : shared_lock__cons__mutex_p ]
    411           [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/cons/time_point_pass.cpp : shared_lock__cons__time_point_p ]
    412           [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/cons/try_to_lock_pass.cpp : shared_lock__cons__try_to_lock_p ]
    413           [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/locking/lock_pass.cpp : shared_lock__lock_p ]
    414           [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/locking/try_lock_for_pass.cpp : shared_lock__try_lock_for_p ]
    415           [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/locking/try_lock_pass.cpp : shared_lock__try_lock_p ]
    416           [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/locking/try_lock_until_pass.cpp : shared_lock__try_lock_until_p ]
    417           [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/locking/unlock_pass.cpp : shared_lock__unlock_p ]
    418           [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/mod/member_swap_pass.cpp : shared_lock__member_swap_p ]
    419           [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/mod/non_member_swap_pass.cpp : shared_lock__non_member_swap_p ]
    420           [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/mod/release_pass.cpp : shared_lock__release_p ]
    421           [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/obs/mutex_pass.cpp : shared_lock__mutex_p ]
    422           [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/obs/op_bool_pass.cpp : shared_lock__op_bool_p ]
    423           [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/obs/owns_lock_pass.cpp : shared_lock__owns_lock_p ]
    424           [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock/types_pass.cpp : shared_lock__types_p ]
     417          [ thread-run2-noit ./sync/mutual_exclusion/locks/shared_lock/cons/adopt_lock_pass.cpp : shared_lock__cons__adopt_lock_p ]
     418          [ thread-run2-noit ./sync/mutual_exclusion/locks/shared_lock/cons/default_pass.cpp : shared_lock__cons__default_p ]
     419          [ thread-run2-noit ./sync/mutual_exclusion/locks/shared_lock/cons/defer_lock_pass.cpp : shared_lock__cons__defer_lock_p ]
     420          [ thread-run2-noit ./sync/mutual_exclusion/locks/shared_lock/cons/duration_pass.cpp : shared_lock__cons__duration_p ]
     421          [ thread-run2-noit ./sync/mutual_exclusion/locks/shared_lock/cons/move_assign_pass.cpp : shared_lock__cons__move_assign_p ]
     422          [ thread-run2-noit ./sync/mutual_exclusion/locks/shared_lock/cons/move_ctor_pass.cpp : shared_lock__cons__move_ctor_p ]
     423          [ thread-run2-noit ./sync/mutual_exclusion/locks/shared_lock/cons/move_ctor_unique_lock_pass.cpp : shared_lock__cons__move_ctor_unique_lock_p ]
     424          [ thread-run2-noit ./sync/mutual_exclusion/locks/shared_lock/cons/move_ctor_upgrade_lock_pass.cpp : shared_lock__cons__move_ctor_upgrade_lock_p ]
     425          [ thread-run2-noit ./sync/mutual_exclusion/locks/shared_lock/cons/mutex_pass.cpp : shared_lock__cons__mutex_p ]
     426          [ thread-run2-noit ./sync/mutual_exclusion/locks/shared_lock/cons/time_point_pass.cpp : shared_lock__cons__time_point_p ]
     427          [ thread-run2-noit ./sync/mutual_exclusion/locks/shared_lock/cons/try_to_lock_pass.cpp : shared_lock__cons__try_to_lock_p ]
     428          [ thread-run2-noit ./sync/mutual_exclusion/locks/shared_lock/locking/lock_pass.cpp : shared_lock__lock_p ]
     429          [ thread-run2-noit ./sync/mutual_exclusion/locks/shared_lock/locking/try_lock_for_pass.cpp : shared_lock__try_lock_for_p ]
     430          [ thread-run2-noit ./sync/mutual_exclusion/locks/shared_lock/locking/try_lock_pass.cpp : shared_lock__try_lock_p ]
     431          [ thread-run2-noit ./sync/mutual_exclusion/locks/shared_lock/locking/try_lock_until_pass.cpp : shared_lock__try_lock_until_p ]
     432          [ thread-run2-noit ./sync/mutual_exclusion/locks/shared_lock/locking/unlock_pass.cpp : shared_lock__unlock_p ]
     433          [ thread-run2-noit ./sync/mutual_exclusion/locks/shared_lock/mod/member_swap_pass.cpp : shared_lock__member_swap_p ]
     434          [ thread-run2-noit ./sync/mutual_exclusion/locks/shared_lock/mod/non_member_swap_pass.cpp : shared_lock__non_member_swap_p ]
     435          [ thread-run2-noit ./sync/mutual_exclusion/locks/shared_lock/mod/release_pass.cpp : shared_lock__release_p ]
     436          [ thread-run2-noit ./sync/mutual_exclusion/locks/shared_lock/obs/mutex_pass.cpp : shared_lock__mutex_p ]
     437          [ thread-run2-noit ./sync/mutual_exclusion/locks/shared_lock/obs/op_bool_pass.cpp : shared_lock__op_bool_p ]
     438          [ thread-run2-noit ./sync/mutual_exclusion/locks/shared_lock/obs/owns_lock_pass.cpp : shared_lock__owns_lock_p ]
     439          [ thread-run2-noit ./sync/mutual_exclusion/locks/shared_lock/types_pass.cpp : shared_lock__types_p ]
    425440
    426441          [ thread-run2-h ./sync/mutual_exclusion/locks/shared_lock/cons/default_pass.cpp : shared_lock__cons__default_p ]
    427442          [ thread-run2-h ./sync/mutual_exclusion/locks/shared_lock/cons/defer_lock_pass.cpp : shared_lock__cons__defer_lock_p ]
     
    433448    :
    434449          [ thread-compile-fail ./sync/mutual_exclusion/locks/upgrade_lock/cons/copy_assign_fail.cpp : : upgrade_lock__cons__copy_assign_f ]
    435450          [ thread-compile-fail ./sync/mutual_exclusion/locks/upgrade_lock/cons/copy_ctor_fail.cpp : : upgrade_lock__cons__copy_ctor_f ]
    436           [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/adopt_lock_pass.cpp : upgrade_lock__cons__adopt_lock_p ]
    437           [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/default_pass.cpp : upgrade_lock__cons__default_p ]
    438           [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/defer_lock_pass.cpp : upgrade_lock__cons__defer_lock_p ]
    439           [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/duration_pass.cpp : upgrade_lock__cons__duration_p ]
    440           [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/move_assign_pass.cpp : upgrade_lock__cons__move_assign_p ]
    441           [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/move_ctor_pass.cpp : upgrade_lock__cons__move_ctor_p ]
    442           [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/move_ctor_unique_lock_pass.cpp : upgrade_lock__cons__move_ctor_unique_lock_p ]
    443           [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/mutex_pass.cpp : upgrade_lock__cons__mutex_p ]
    444           [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/time_point_pass.cpp : upgrade_lock__cons__time_point_p ]
    445           [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/try_to_lock_pass.cpp : upgrade_lock__cons__try_to_lock_p ]
    446           [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/locking/lock_pass.cpp : upgrade_lock__lock_p ]
    447           [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/locking/try_lock_for_pass.cpp : upgrade_lock__try_lock_for_p ]
    448           [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/locking/try_lock_pass.cpp : upgrade_lock__try_lock_p ]
    449           [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/locking/try_lock_until_pass.cpp : upgrade_lock__try_lock_until_p ]
    450           [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/locking/unlock_pass.cpp : upgrade_lock__unlock_p ]
    451           [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/mod/member_swap_pass.cpp : upgrade_lock__member_swap_p ]
    452           [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/mod/non_member_swap_pass.cpp : upgrade_lock__non_member_swap_p ]
    453           [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/mod/release_pass.cpp : upgrade_lock__release_p ]
    454           [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/obs/mutex_pass.cpp : upgrade_lock__mutex_p ]
    455           [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/obs/op_bool_pass.cpp : upgrade_lock__op_bool_p ]
    456           [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/obs/owns_lock_pass.cpp : upgrade_lock__owns_lock_p ]
    457           [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/types_pass.cpp : upgrade_lock__types_p ]
     451          [ thread-run2-noit ./sync/mutual_exclusion/locks/upgrade_lock/cons/adopt_lock_pass.cpp : upgrade_lock__cons__adopt_lock_p ]
     452          [ thread-run2-noit ./sync/mutual_exclusion/locks/upgrade_lock/cons/default_pass.cpp : upgrade_lock__cons__default_p ]
     453          [ thread-run2-noit ./sync/mutual_exclusion/locks/upgrade_lock/cons/defer_lock_pass.cpp : upgrade_lock__cons__defer_lock_p ]
     454          [ thread-run2-noit ./sync/mutual_exclusion/locks/upgrade_lock/cons/duration_pass.cpp : upgrade_lock__cons__duration_p ]
     455          [ thread-run2-noit ./sync/mutual_exclusion/locks/upgrade_lock/cons/move_assign_pass.cpp : upgrade_lock__cons__move_assign_p ]
     456          [ thread-run2-noit ./sync/mutual_exclusion/locks/upgrade_lock/cons/move_ctor_pass.cpp : upgrade_lock__cons__move_ctor_p ]
     457          [ thread-run2-noit ./sync/mutual_exclusion/locks/upgrade_lock/cons/move_ctor_unique_lock_pass.cpp : upgrade_lock__cons__move_ctor_unique_lock_p ]
     458          [ thread-run2-noit ./sync/mutual_exclusion/locks/upgrade_lock/cons/mutex_pass.cpp : upgrade_lock__cons__mutex_p ]
     459          [ thread-run2-noit ./sync/mutual_exclusion/locks/upgrade_lock/cons/time_point_pass.cpp : upgrade_lock__cons__time_point_p ]
     460          [ thread-run2-noit ./sync/mutual_exclusion/locks/upgrade_lock/cons/try_to_lock_pass.cpp : upgrade_lock__cons__try_to_lock_p ]
     461          [ thread-run2-noit ./sync/mutual_exclusion/locks/upgrade_lock/locking/lock_pass.cpp : upgrade_lock__lock_p ]
     462          [ thread-run2-noit ./sync/mutual_exclusion/locks/upgrade_lock/locking/try_lock_for_pass.cpp : upgrade_lock__try_lock_for_p ]
     463          [ thread-run2-noit ./sync/mutual_exclusion/locks/upgrade_lock/locking/try_lock_pass.cpp : upgrade_lock__try_lock_p ]
     464          [ thread-run2-noit ./sync/mutual_exclusion/locks/upgrade_lock/locking/try_lock_until_pass.cpp : upgrade_lock__try_lock_until_p ]
     465          [ thread-run2-noit ./sync/mutual_exclusion/locks/upgrade_lock/locking/unlock_pass.cpp : upgrade_lock__unlock_p ]
     466          [ thread-run2-noit ./sync/mutual_exclusion/locks/upgrade_lock/mod/member_swap_pass.cpp : upgrade_lock__member_swap_p ]
     467          [ thread-run2-noit ./sync/mutual_exclusion/locks/upgrade_lock/mod/non_member_swap_pass.cpp : upgrade_lock__non_member_swap_p ]
     468          [ thread-run2-noit ./sync/mutual_exclusion/locks/upgrade_lock/mod/release_pass.cpp : upgrade_lock__release_p ]
     469          [ thread-run2-noit ./sync/mutual_exclusion/locks/upgrade_lock/obs/mutex_pass.cpp : upgrade_lock__mutex_p ]
     470          [ thread-run2-noit ./sync/mutual_exclusion/locks/upgrade_lock/obs/op_bool_pass.cpp : upgrade_lock__op_bool_p ]
     471          [ thread-run2-noit ./sync/mutual_exclusion/locks/upgrade_lock/obs/owns_lock_pass.cpp : upgrade_lock__owns_lock_p ]
     472          [ thread-run2-noit ./sync/mutual_exclusion/locks/upgrade_lock/types_pass.cpp : upgrade_lock__types_p ]
    458473    ;
    459474
    460475    #explicit ts_mutex ;
     
    462477    :
    463478          [ thread-compile-fail ./sync/mutual_exclusion/mutex/assign_fail.cpp : : mutex__assign_f ]
    464479          [ thread-compile-fail ./sync/mutual_exclusion/mutex/copy_fail.cpp : : mutex__copy_f ]
    465           [ thread-run2 ./sync/mutual_exclusion/mutex/default_pass.cpp : mutex__default_p ]
    466           [ thread-run2 ./sync/mutual_exclusion/mutex/lock_pass.cpp : mutex__lock_p ]
    467           [ thread-run2 ./sync/mutual_exclusion/mutex/native_handle_pass.cpp : mutex__native_handle_p ]
    468           [ thread-run2 ./sync/mutual_exclusion/mutex/try_lock_pass.cpp : mutex__try_lock_p ]
     480          [ thread-run2-noit ./sync/mutual_exclusion/mutex/default_pass.cpp : mutex__default_p ]
     481          [ thread-run2-noit ./sync/mutual_exclusion/mutex/lock_pass.cpp : mutex__lock_p ]
     482          [ thread-run2-noit ./sync/mutual_exclusion/mutex/native_handle_pass.cpp : mutex__native_handle_p ]
     483          [ thread-run2-noit ./sync/mutual_exclusion/mutex/try_lock_pass.cpp : mutex__try_lock_p ]
    469484    ;
    470485
    471486    #explicit ts_recursive_mutex ;
     
    473488    :
    474489          [ thread-compile-fail ./sync/mutual_exclusion/recursive_mutex/assign_fail.cpp : : recursive_mutex__assign_f ]
    475490          [ thread-compile-fail ./sync/mutual_exclusion/recursive_mutex/copy_fail.cpp : : recursive_mutex__copy_f ]
    476           [ thread-run2 ./sync/mutual_exclusion/recursive_mutex/default_pass.cpp : recursive_mutex__default_p ]
    477           [ thread-run2 ./sync/mutual_exclusion/recursive_mutex/lock_pass.cpp : recursive_mutex__lock_p ]
    478           [ thread-run2 ./sync/mutual_exclusion/recursive_mutex/native_handle_pass.cpp : recursive_mutex__native_handle_p ]
    479           [ thread-run2 ./sync/mutual_exclusion/recursive_mutex/try_lock_pass.cpp : recursive_mutex__try_lock_p ]
     491          [ thread-run2-noit ./sync/mutual_exclusion/recursive_mutex/default_pass.cpp : recursive_mutex__default_p ]
     492          [ thread-run2-noit ./sync/mutual_exclusion/recursive_mutex/lock_pass.cpp : recursive_mutex__lock_p ]
     493          [ thread-run2-noit ./sync/mutual_exclusion/recursive_mutex/native_handle_pass.cpp : recursive_mutex__native_handle_p ]
     494          [ thread-run2-noit ./sync/mutual_exclusion/recursive_mutex/try_lock_pass.cpp : recursive_mutex__try_lock_p ]
    480495    ;
    481496
    482497    #explicit ts_recursive_timed_mutex ;
     
    484499    :
    485500          [ thread-compile-fail ./sync/mutual_exclusion/recursive_timed_mutex/assign_fail.cpp : : recursive_timed_mutex__assign_f ]
    486501          [ thread-compile-fail ./sync/mutual_exclusion/recursive_timed_mutex/copy_fail.cpp : : recursive_timed_mutex__copy_f ]
    487           [ thread-run2 ./sync/mutual_exclusion/recursive_timed_mutex/default_pass.cpp : recursive_timed_mutex__default_p ]
    488           [ thread-run2 ./sync/mutual_exclusion/recursive_timed_mutex/lock_pass.cpp : recursive_timed_mutex__lock_p ]
    489           [ thread-run2 ./sync/mutual_exclusion/recursive_timed_mutex/native_handle_pass.cpp : recursive_timed_mutex__native_handle_p ]
    490           [ thread-run2 ./sync/mutual_exclusion/recursive_timed_mutex/try_lock_for_pass.cpp : recursive_timed_mutex__try_lock_for_p ]
    491           [ thread-run2 ./sync/mutual_exclusion/recursive_timed_mutex/try_lock_pass.cpp : recursive_timed_mutex__try_lock_p ]
    492           [ thread-run2 ./sync/mutual_exclusion/recursive_timed_mutex/try_lock_until_pass.cpp : recursive_timed_mutex__try_lock_until_p ]
     502          [ thread-run2-noit ./sync/mutual_exclusion/recursive_timed_mutex/default_pass.cpp : recursive_timed_mutex__default_p ]
     503          [ thread-run2-noit ./sync/mutual_exclusion/recursive_timed_mutex/lock_pass.cpp : recursive_timed_mutex__lock_p ]
     504          [ thread-run2-noit ./sync/mutual_exclusion/recursive_timed_mutex/native_handle_pass.cpp : recursive_timed_mutex__native_handle_p ]
     505          [ thread-run2-noit ./sync/mutual_exclusion/recursive_timed_mutex/try_lock_for_pass.cpp : recursive_timed_mutex__try_lock_for_p ]
     506          [ thread-run2-noit ./sync/mutual_exclusion/recursive_timed_mutex/try_lock_pass.cpp : recursive_timed_mutex__try_lock_p ]
     507          [ thread-run2-noit ./sync/mutual_exclusion/recursive_timed_mutex/try_lock_until_pass.cpp : recursive_timed_mutex__try_lock_until_p ]
    493508    ;
    494509
    495510    #explicit ts_timed_mutex ;
     
    497512    :
    498513          [ thread-compile-fail ./sync/mutual_exclusion/timed_mutex/assign_fail.cpp : : timed_mutex__assign_f ]
    499514          [ thread-compile-fail ./sync/mutual_exclusion/timed_mutex/copy_fail.cpp : : timed_mutex__copy_f ]
    500           [ thread-run2 ./sync/mutual_exclusion/timed_mutex/default_pass.cpp : timed_mutex__default_p ]
    501           [ thread-run2 ./sync/mutual_exclusion/timed_mutex/lock_pass.cpp : timed_mutex__lock_p ]
    502           [ thread-run2 ./sync/mutual_exclusion/timed_mutex/native_handle_pass.cpp : timed_mutex__native_handle_p ]
    503           [ thread-run2 ./sync/mutual_exclusion/timed_mutex/try_lock_for_pass.cpp : timed_mutex__try_lock_for_p ]
    504           [ thread-run2 ./sync/mutual_exclusion/timed_mutex/try_lock_pass.cpp : timed_mutex__try_lock_p ]
    505           [ thread-run2 ./sync/mutual_exclusion/timed_mutex/try_lock_until_pass.cpp : timed_mutex__try_lock_until_p ]
     515          [ thread-run2-noit ./sync/mutual_exclusion/timed_mutex/default_pass.cpp : timed_mutex__default_p ]
     516          [ thread-run2-noit ./sync/mutual_exclusion/timed_mutex/lock_pass.cpp : timed_mutex__lock_p ]
     517          [ thread-run2-noit ./sync/mutual_exclusion/timed_mutex/native_handle_pass.cpp : timed_mutex__native_handle_p ]
     518          [ thread-run2-noit ./sync/mutual_exclusion/timed_mutex/try_lock_for_pass.cpp : timed_mutex__try_lock_for_p ]
     519          [ thread-run2-noit ./sync/mutual_exclusion/timed_mutex/try_lock_pass.cpp : timed_mutex__try_lock_p ]
     520          [ thread-run2-noit ./sync/mutual_exclusion/timed_mutex/try_lock_until_pass.cpp : timed_mutex__try_lock_until_p ]
    506521    ;
    507522
    508523    #explicit ts_shared_mutex ;
     
    510525    :
    511526          [ thread-compile-fail ./sync/mutual_exclusion/shared_mutex/assign_fail.cpp : : shared_mutex__assign_f ]
    512527          [ thread-compile-fail ./sync/mutual_exclusion/shared_mutex/copy_fail.cpp : : shared_mutex__copy_f ]
    513           [ thread-run2 ./sync/mutual_exclusion/shared_mutex/default_pass.cpp : shared_mutex__default_p ]
    514           [ thread-run2 ./sync/mutual_exclusion/shared_mutex/lock_pass.cpp : shared_mutex__lock_p ]
    515           [ thread-run2 ./sync/mutual_exclusion/shared_mutex/try_lock_for_pass.cpp : shared_mutex__try_lock_for_p ]
    516           [ thread-run2 ./sync/mutual_exclusion/shared_mutex/try_lock_pass.cpp : shared_mutex__try_lock_p ]
    517           [ thread-run2 ./sync/mutual_exclusion/shared_mutex/try_lock_until_pass.cpp : shared_mutex__try_lock_until_p ]
     528          [ thread-run2-noit ./sync/mutual_exclusion/shared_mutex/default_pass.cpp : shared_mutex__default_p ]
     529          [ thread-run2-noit ./sync/mutual_exclusion/shared_mutex/lock_pass.cpp : shared_mutex__lock_p ]
     530          [ thread-run2-noit ./sync/mutual_exclusion/shared_mutex/try_lock_for_pass.cpp : shared_mutex__try_lock_for_p ]
     531          [ thread-run2-noit ./sync/mutual_exclusion/shared_mutex/try_lock_pass.cpp : shared_mutex__try_lock_p ]
     532          [ thread-run2-noit ./sync/mutual_exclusion/shared_mutex/try_lock_until_pass.cpp : shared_mutex__try_lock_until_p ]
    518533
    519534          [ thread-run2-h ./sync/mutual_exclusion/shared_mutex/default_pass.cpp : shared_mutex__default_p ]
    520535    ;
     
    522537    #explicit ts_this_thread ;
    523538    test-suite ts_this_thread
    524539    :
    525           [ thread-run2 ./threads/this_thread/get_id/get_id_pass.cpp : this_thread__get_id_p ]
    526           [ thread-run2 ./threads/this_thread/sleep_for/sleep_for_pass.cpp : this_thread__sleep_for_p ]
    527           [ thread-run2 ./threads/this_thread/sleep_until/sleep_until_pass.cpp : this_thread__sleep_until_p ]
     540          [ thread-run2-noit ./threads/this_thread/get_id/get_id_pass.cpp : this_thread__get_id_p ]
     541          [ thread-run2-noit ./threads/this_thread/sleep_for/sleep_for_pass.cpp : this_thread__sleep_for_p ]
     542          [ thread-run2-noit ./threads/this_thread/sleep_until/sleep_until_pass.cpp : this_thread__sleep_until_p ]
    528543    ;
    529544
    530545    #explicit ts_thread ;
    531546    test-suite ts_thread
    532547    :
    533548          [ thread-compile-fail ./threads/thread/assign/copy_fail.cpp : : thread__assign__copy_f ]
    534           [ thread-run2 ./threads/thread/assign/move_pass.cpp : thread__assign__move_p ]
     549          [ thread-run2-noit ./threads/thread/assign/move_pass.cpp : thread__assign__move_p ]
    535550          [ thread-compile-fail ./threads/thread/constr/copy_fail.cpp : : thread__constr__copy_f ]
    536           [ thread-run2 ./threads/thread/constr/default_pass.cpp : thread__constr__default_p ]
     551          [ thread-run2-noit ./threads/thread/constr/default_pass.cpp : thread__constr__default_p ]
    537552          [ thread-run-lib2 ./threads/thread/constr/F_pass.cpp : thread__constr__F_p ]
    538553          [ thread-run-lib2 ./threads/thread/constr/FArgs_pass.cpp : thread__constr__FArgs_p ]
    539           [ thread-run2 ./threads/thread/constr/Frvalue_pass.cpp : thread__constr__Frvalue_p ]
    540           [ thread-run2 ./threads/thread/constr/FrvalueArgs_pass.cpp : thread__constr__FrvalueArgs_p ]
    541           [ thread-run2 ./threads/thread/constr/move_pass.cpp : thread__constr__move_p ]
    542           [ thread-run2 ./threads/thread/destr/dtor_pass.cpp : thread__destr__dtor_p ]
    543           [ thread-run2 ./threads/thread/id/hash_pass.cpp : thread__id__hash_p ]
    544           [ thread-run2 ./threads/thread/members/detach_pass.cpp : thread__detach_p ]
    545           [ thread-run2 ./threads/thread/members/get_id_pass.cpp : thread__get_id_p ]
    546           [ thread-run2 ./threads/thread/members/join_pass.cpp : thread__join_p ]
    547           [ thread-run2 ./threads/thread/members/try_join_until_pass.cpp : thread__join_until_p ]
    548           [ thread-run2 ./threads/thread/members/try_join_for_pass.cpp : thread__join_for_p ]
    549           [ thread-run2 ./threads/thread/members/joinable_pass.cpp : thread__joinable_p ]
    550           [ thread-run2 ./threads/thread/members/native_handle_pass.cpp : thread__native_handle_p ]
    551           [ thread-run2 ./threads/thread/members/swap_pass.cpp : thread__swap_p ]
    552           [ thread-run2 ./threads/thread/non_members/swap_pass.cpp : swap_threads_p ]
    553           [ thread-run2 ./threads/thread/static/hardware_concurrency_pass.cpp : thread__hardware_concurrency_p ]
     554          [ thread-run2-noit ./threads/thread/constr/Frvalue_pass.cpp : thread__constr__Frvalue_p ]
     555          [ thread-run2-noit ./threads/thread/constr/FrvalueArgs_pass.cpp : thread__constr__FrvalueArgs_p ]
     556          [ thread-run2-noit ./threads/thread/constr/move_pass.cpp : thread__constr__move_p ]
     557          [ thread-run2-noit ./threads/thread/destr/dtor_pass.cpp : thread__destr__dtor_p ]
     558          [ thread-run2-noit ./threads/thread/id/hash_pass.cpp : thread__id__hash_p ]
     559          [ thread-run2-noit ./threads/thread/members/detach_pass.cpp : thread__detach_p ]
     560          [ thread-run2-noit ./threads/thread/members/get_id_pass.cpp : thread__get_id_p ]
     561          [ thread-run2-noit ./threads/thread/members/join_pass.cpp : thread__join_p ]
     562          [ thread-run2-noit ./threads/thread/members/try_join_until_pass.cpp : thread__join_until_p ]
     563          [ thread-run2-noit ./threads/thread/members/try_join_for_pass.cpp : thread__join_for_p ]
     564          [ thread-run2-noit ./threads/thread/members/joinable_pass.cpp : thread__joinable_p ]
     565          [ thread-run2-noit ./threads/thread/members/native_handle_pass.cpp : thread__native_handle_p ]
     566          [ thread-run2-noit ./threads/thread/members/swap_pass.cpp : thread__swap_p ]
     567          [ thread-run2-noit ./threads/thread/non_members/swap_pass.cpp : swap_threads_p ]
     568          [ thread-run2-noit ./threads/thread/static/hardware_concurrency_pass.cpp : thread__hardware_concurrency_p ]
    554569    ;
    555570
    556571    #explicit ts_container ;
    557572    test-suite ts_container
    558573    :
    559           [ thread-run2 ./threads/container/thread_vector_pass.cpp : container__thread_vector_p ]
    560           [ thread-run2 ./threads/container/thread_ptr_list_pass.cpp : container__thread_ptr_list_p ]
     574          [ thread-run2-noit ./threads/container/thread_vector_pass.cpp : container__thread_vector_p ]
     575          [ thread-run2-noit ./threads/container/thread_ptr_list_pass.cpp : container__thread_ptr_list_p ]
    561576    ;
    562577
    563578    #explicit ts_examples ;
    564579    test-suite ts_examples
    565580    :
    566           [ thread-run ../example/monitor.cpp ]
     581          [ thread-run2-noit ../example/monitor.cpp : ex_monitor ]
    567582          [ compile ../example/starvephil.cpp ]
    568583          #[ compile ../example/tennis.cpp ]
    569584          [ compile ../example/condition.cpp ]
    570           [ thread-run ../example/mutex.cpp ]
    571           [ thread-run ../example/once.cpp ]
    572           [ thread-run ../example/recursive_mutex.cpp ]
    573           [ thread-run2 ../example/thread.cpp : ex_thread ]
    574           [ thread-run ../example/thread_group.cpp ]
    575           [ thread-run ../example/tss.cpp ]
     585          [ thread-run2-noit ../example/mutex.cpp : ex_mutex ]
     586          [ thread-run2-noit ../example/once.cpp : ex_once ]
     587          [ thread-run2-noit ../example/recursive_mutex.cpp : ex_recursive_mutex ]
     588          [ thread-run2-noit ../example/thread.cpp : ex_thread ]
     589          [ thread-run2-noit ../example/thread_group.cpp : ex_thread_group ]
     590          [ thread-run2-noit ../example/tss.cpp : ex_tss ]
    576591          [ thread-run ../example/xtime.cpp ]
    577592          [ thread-run ../example/shared_monitor.cpp ]
    578593          [ thread-run ../example/shared_mutex.cpp ]
     
    580595          #[ thread-run ../example/vhh_shared_mutex.cpp ]
    581596          [ thread-run ../example/make_future.cpp ]
    582597          [ thread-run ../example/future_then.cpp ]
    583           [ thread-run ../example/synchronized_value.cpp ]
    584           [ thread-run ../example/synchronized_person.cpp ]
    585           [ thread-run ../example/thread_guard.cpp ]
    586           [ thread-run ../example/scoped_thread.cpp ]
    587           [ thread-run ../example/strict_lock.cpp ]
    588           [ thread-run ../example/ba_externallly_locked.cpp ]
     598          [ thread-run2-noit ../example/synchronized_value.cpp : ex_synchronized_value ]
     599          [ thread-run2-noit ../example/synchronized_person.cpp : ex_synchronized_person ]
     600          [ thread-run2-noit ../example/thread_guard.cpp : ex_thread_guard ]
     601          [ thread-run2-noit ../example/scoped_thread.cpp : ex_scoped_thread ]
     602          [ thread-run2-noit ../example/strict_lock.cpp : ex_strict_lock ]
     603          [ thread-run2-noit ../example/ba_externallly_locked.cpp : ex_ba_externallly_locked ]
    589604
    590605    ;
    591606
    592607    #explicit ts_shared_upwards ;
    593608    test-suite ts_shared_upwards
    594609    :
    595           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/move_ctor_shared_lock_try_pass.cpp : unique_lock__cons__move_ctor_shared_lock_try_p ]
    596           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/move_ctor_shared_lock_for_pass.cpp : unique_lock__cons__move_ctor_shared_lock_for_p ]
    597           [ thread-run2 ./sync/mutual_exclusion/locks/unique_lock/cons/move_ctor_shared_lock_until_pass.cpp : unique_lock__cons__move_ctor_shared_lock_until_p ]
     610          [ thread-run2-noit ./sync/mutual_exclusion/locks/unique_lock/cons/move_ctor_shared_lock_try_pass.cpp : unique_lock__cons__move_ctor_shared_lock_try_p ]
     611          [ thread-run2-noit ./sync/mutual_exclusion/locks/unique_lock/cons/move_ctor_shared_lock_for_pass.cpp : unique_lock__cons__move_ctor_shared_lock_for_p ]
     612          [ thread-run2-noit ./sync/mutual_exclusion/locks/unique_lock/cons/move_ctor_shared_lock_until_pass.cpp : unique_lock__cons__move_ctor_shared_lock_until_p ]
    598613
    599           [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/move_ctor_shared_lock_try_pass.cpp : upgrade_lock__cons__move_ctor_shared_lock_try_p ]
    600           [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/move_ctor_shared_lock_for_pass.cpp : upgrade_lock__cons__move_ctor_shared_lock_for_p ]
    601           [ thread-run2 ./sync/mutual_exclusion/locks/upgrade_lock/cons/move_ctor_shared_lock_until_pass.cpp : upgrade_lock__cons__move_ctor_shared_lock_until_p ]
     614          [ thread-run2-noit ./sync/mutual_exclusion/locks/upgrade_lock/cons/move_ctor_shared_lock_try_pass.cpp : upgrade_lock__cons__move_ctor_shared_lock_try_p ]
     615          [ thread-run2-noit ./sync/mutual_exclusion/locks/upgrade_lock/cons/move_ctor_shared_lock_for_pass.cpp : upgrade_lock__cons__move_ctor_shared_lock_for_p ]
     616          [ thread-run2-noit ./sync/mutual_exclusion/locks/upgrade_lock/cons/move_ctor_shared_lock_until_pass.cpp : upgrade_lock__cons__move_ctor_shared_lock_until_p ]
    602617    ;
    603618
    604619
     
    607622    :
    608623          [ thread-compile-fail ./sync/mutual_exclusion/locks/shared_lock_guard/copy_assign_fail.cpp : : shared_lock_guard__cons__copy_assign_f ]
    609624          [ thread-compile-fail ./sync/mutual_exclusion/locks/shared_lock_guard/copy_ctor_fail.cpp : : shared_lock_guard__cons__copy_ctor_f ]
    610           [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock_guard/adopt_lock_pass.cpp : shared_lock_guard__cons__adopt_lock_p ]
    611           [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock_guard/default_pass.cpp : shared_lock_guard__cons__default_p ]
    612           [ thread-run2 ./sync/mutual_exclusion/locks/shared_lock_guard/types_pass.cpp : shared_lock_guard__types_p ]
     625          [ thread-run2-noit ./sync/mutual_exclusion/locks/shared_lock_guard/adopt_lock_pass.cpp : shared_lock_guard__cons__adopt_lock_p ]
     626          [ thread-run2-noit ./sync/mutual_exclusion/locks/shared_lock_guard/default_pass.cpp : shared_lock_guard__cons__default_p ]
     627          [ thread-run2-noit ./sync/mutual_exclusion/locks/shared_lock_guard/types_pass.cpp : shared_lock_guard__types_p ]
    613628    ;
    614629
    615630    #explicit ts_reverse_lock ;
     
    617632    :
    618633          [ thread-compile-fail ./sync/mutual_exclusion/locks/reverse_lock/copy_assign_fail.cpp : : reverse_lock__copy_assign_f ]
    619634          [ thread-compile-fail ./sync/mutual_exclusion/locks/reverse_lock/copy_ctor_fail.cpp : : reverse_lock__copy_ctor_f ]
    620           [ thread-run2 ./sync/mutual_exclusion/locks/reverse_lock/unique_lock_ctor_pass.cpp : reverse_lock__unique_lock_ctor_p ]
    621           [ thread-run2 ./sync/mutual_exclusion/locks/reverse_lock/types_pass.cpp : reverse_lock__types_p ]
     635          [ thread-run2-noit ./sync/mutual_exclusion/locks/reverse_lock/unique_lock_ctor_pass.cpp : reverse_lock__unique_lock_ctor_p ]
     636          [ thread-run2-noit ./sync/mutual_exclusion/locks/reverse_lock/types_pass.cpp : reverse_lock__types_p ]
    622637    ;
    623638
    624639    explicit ts_ ;
    625640    test-suite ts_
    626641    :
     642          [ thread-run2-noit ./sync/conditions/notify_all_at_thread_exit_pass.cpp : notify_all_at_thread_exit_p2 ]
     643          [ thread-run2-noit ./sync/futures/promise/set_exception_at_thread_exit_pass.cpp : promise__set_exception_at_thread_exit_p2 ]
     644          [ thread-run2-noit ./sync/futures/promise/set_lvalue_at_thread_exit_pass.cpp : promise__set_lvalue_at_thread_exit_p2 ]
     645          [ thread-run2-noit ./sync/futures/promise/set_rvalue_at_thread_exit_pass.cpp : promise__set_rvalue_at_thread_exit_p2 ]
     646          [ thread-run2-noit ./sync/futures/promise/set_value_at_thread_exit_const_pass.cpp : promise__set_value_at_thread_exit_const_p2 ]
     647          [ thread-run2-noit ./sync/futures/promise/set_value_at_thread_exit_void_pass.cpp : promise__set_value_at_thread_exit_void_p2 ]
     648          [ thread-run2-noit ./sync/futures/packaged_task/make_ready_at_thread_exit_pass.cpp : packaged_task__make_ready_at_thread_exit_p2 ]
    627649          #[ thread-run test_7665.cpp ]
    628650          #[ thread-run test_7666.cpp ]
    629651          #[ thread-run ../example/unwrap.cpp ]
  • libs/thread/src/pthread/once.cpp

     
    44//  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
    55
    66#define __STDC_CONSTANT_MACROS
     7#include <boost/thread/pthread/pthread_mutex_scoped_lock.hpp>
    78#include <boost/thread/once.hpp>
    89#include <boost/assert.hpp>
    910#include <pthread.h>
  • libs/thread/src/pthread/thread.cpp

     
    501501            BOOST_VERIFY(!sched_yield());
    502502#   elif defined(BOOST_HAS_PTHREAD_YIELD)
    503503            BOOST_VERIFY(!pthread_yield());
    504 #   elif defined BOOST_THREAD_USES_DATETIME
     504//#   elif defined BOOST_THREAD_USES_DATETIME
    505505//            xtime xt;
    506506//            xtime_get(&xt, TIME_UTC_);
    507507//            sleep(xt);
    508 //#   else
    509             sleep_for(chrono::milliseconds(0));
     508#   else
     509            timespec ts;
     510            ts.sec= 0;
     511            ts.nsec= 0;
     512            hiden::sleep_for(ts);
    510513#   endif
    511514        }
    512515    }
     
    723726            }
    724727        }
    725728    }
     729
    726730    BOOST_THREAD_DECL void notify_all_at_thread_exit(condition_variable& cond, unique_lock<mutex> lk)
    727731    {
    728732      detail::thread_data_base* const current_thread_data(detail::get_current_thread_data());
  • libs/thread/example/thread_group.cpp

     
    3535        threads.create_thread(&increment_count);
    3636    threads.join_all();
    3737  }
     38#if defined BOOST_THREAD_PROVIDES_INTERRUPTIONS
    3839  {
    3940    boost::thread_group threads;
    4041    for (int i = 0; i < 3; ++i)
     
    4243    threads.interrupt_all();
    4344    threads.join_all();
    4445  }
     46#endif
    4547  {
    4648    boost::thread_group threads;
    4749    boost::thread* th = new boost::thread(&increment_count);